私は次のコードでのJava 3Dで描いたコーンを持っている:Java 3Dでオブジェクトを回転するには?
Cone cone = new Cone(2f, 3f);
Transform3D t3d = new Transform3D();
TransformGroup coneTransform = new TransformGroup(t3d);
coneTransform.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
t3d.setTranslation(new Vector3f(0f,0f,0f);
coneTransform.setTransform(t3d);
coneTransform.addChild(cone);
this.addChild(coneTransform);
は、私はポイント(1,1,1)の前に座っコーンを持っていると仮定し、私は、円錐の先端が下に指すようにしたいです想像線は(0,0,0)と(1,1,1)を通っています...どうすればいいですか?すべての助けを事前に
Transform3D t3d = new Transform3D();
Vector3f direction = new Vector3f(1,2,1);
final double angleX = direction.angle(new Vector3f(1,0,0));
final double angleY = direction.angle(new Vector3f(0,1,0));
final double angleZ = direction.angle(new Vector3f(0,0,1));
t3d.rotX(angleX);
t3d.rotY(angleY);
t3d.rotZ(angleZ);
t3d.setTranslation(direction);
coneTransform.setTransform(t3d);
感謝を:ここで
は、私がしようとしてきたものの一例です!
ありがとうございます。 t3d.rotX(Math.PI/2);同様にYについては、Zは円錐を回転させる。 XとYを回転させる角度を計算する方法を記述できますか?たとえば、(0,0,0)から(1,1,1)に線を引いた場合、回転量を計算する方法は? – Cuga
回転関数は、ラジアン値を入力として取ります。 2 * PIが完全に1回転する、または垂直線の間にPI/2度がある(これは私が間違っていて、PI/4のみを回転させる必要があることを意味する)。 一般に、3つの角度に沿って回転する必要はありません。 – Zed
母 - 私はちょうど3回転のすべてを必要としないことに気づいた。私は今、私が必要とする角度をどのように計算するかを紙に書いています。ご協力いただきありがとうございます。 – Cuga