1

我试图在 z 轴上将几个圆柱体旋转 90 度,然后在 y 轴上以不同的度数旋转每个圆柱体。我的问题是使用 setRotation 函数只允许我选择一个角度,但将其应用于多个轴。如果我添加另一个 setRotation,它只会更改它而不添加它。我该怎么做才能对同一个对象应用多个旋转,甚至多个或相同的变换?这是我的代码片段,显示了我的工作。

Cylinder EtoPeg = new Cylinder(1.5f, 130f, Primitive.GENERATE_NORMALS, paint);
tr = new Transform3D();
tr.setTranslation(new Vector3f((-284f) * (1f / 400), (-23f + 0 * 6) * (1f / 400), (26.24375f + (7 * 10.09375f / 8)) * (1f / 400)));
tr.setScale(1f / 400);
tr.setRotation(new AxisAngle4d(0, 0, 1, Math.PI / 2));
tg = new TransformGroup(tr);
spin.addChild(tg);
tg.addChild(EtoPeg);
4

1 回答 1

1

没错,该setRotation方法将变换矩阵的旋转方面重置为您指定的角度的旋转。要组合旋转,您可以创建Transform3D代表所需不同旋转的对象,然后调用mul以将这些旋转相乘(这会修改Transform3D您调用的对象mul)。您可能希望对Transform3D仅包含旋转的对象执行此操作,因为如果您开始乘以同时包含旋转和平移的变换,其含义可能会变得棘手。

于 2016-02-21T23:43:44.423 回答