如何应用不同角度的多次旋转?

时间:2015-12-06 03:43:33

标签: rotation java-3d transformgroup

我试图将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);

1 个答案:

答案 0 :(得分:1)

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