はじめ に このトピックについてしばらく調査してきましたが、完全には把握できていません。例としてstackoverflowや他のオンラインリソースを調べましたが、参照するのにかなり似た問題が見つかりませんでした。どんな助けでも大歓迎です。
重複の量を減らすために、そのような質問が既に回答されている場合はお知らせください。この質問を削除できます。
目的:回転行列を使用して、原点を中心に 3D 空間内の点 [ x,y,z ] を回転させます。
問題の仕様:上記のトピックの理解レベルが不十分です。実装の不確実性;
参照: http://en.wikipedia.org/wiki/Rotation_matrix
コード構造:
class RotationMatrix{
private double theta; // Rotiation angle;
private double rotateX[][] = {{1,0,0},{0,Math.cos(theta),-Math.sin(theta)},{0,Math.sin(theta),Math.cos(theta)}}; // Rotation matrice for x axis;
private double rotateY[][] = {{Math.cos(theta),0,Math.sin(theta)},{0,1,0},{-Math.sin(theta),0,Math.cos(theta)}}; // Rotation matrice for y axis;
private double rotateZ[][] = {{Math.cos(theta),-Math.sin(theta),0},{Math.sin(theta),Math.cos(theta),0},{0,0,1}}; // Rotation matrice for z axis;
// Method to rotate point in interest in 3D [ x,y,z ];
public void Rotate3D(Node n,double[] point){ // Method to be called (Node n to provide direction N/E/U) and array[] point to provide the coordinates of the point in interest;
if(n.getN() == 1){
while(theta != 6.28318531){ // Rotate by 90 degrees till theta != 360;
theta += 1.57079633;
// do rotation around 'y' axis;
}
}
else if(n.getE() == 1){
while(theta != 6.28318531){ // Rotate by 90 degrees till theta != 360;
theta += 1.57079633;
// do rotation around 'x' axis;
}
}
else if(n.getU() == 1){
while(theta != 6.28318531){ // Rotate by 90 degrees till theta != 360;
theta += 1.57079633;
// do rotation around 'z' axis;
}
} else {
System.out.println("The rotation has failed \n"
+ "The direction data is missing...");
}
}
}