0

はじめ に このトピックについてしばらく調査してきましたが、完全には把握できていません。例として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...");
            }
        }
    }
4

0 に答える 0