예제 #1
0
        //                  -1
        // V'=q*V*q     ,
        public void Rotate(Point3d pt)
        {
            this.Normalise();
            Quaternion q1 = this.Copy();

            q1.Conjugate();

            Quaternion qNode = new Quaternion(0, pt.X, pt.Y, pt.Z);

            qNode = this * qNode * q1;
            pt.X  = qNode.X;
            pt.Y  = qNode.Y;
            pt.Z  = qNode.Z;
        }
예제 #2
0
        public void Rotate(Point3d[] nodes)
        {
            this.Normalise();
            Quaternion q1 = this.Copy();

            q1.Conjugate();
            for (int i = 0; i < nodes.Length; i++)
            {
                Quaternion qNode = new Quaternion(0, nodes[i].X, nodes[i].Y, nodes[i].Z);
                qNode      = this * qNode * q1;
                nodes[i].X = qNode.X;
                nodes[i].Y = qNode.Y;
                nodes[i].Z = qNode.Z;
            }
        }