// -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; }
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; } }