public KtQuaternion(Angle angle, KtVector3D axis) { var c = Angle.Cos(angle / 2); var s = Angle.Sin(angle / 2); W = c; X = s * axis.X; Y = s * axis.Y; Z = s * axis.Z; }
public void RotationTest() { var expected = new KtVector3D(2, 3, 4).Normalize(); var initial = new KtVector3D(0, 0, 1); var angle = expected.AngleBetween(initial); var perp2 = expected.Cross(initial).Cross(initial).Cross(initial).Normalize(); var q4 = new KtQuaternion(angle, perp2); var q4p = expected.RotationFrom(initial); Assert.AreEqual(q4, q4p); Assert.AreEqual(expected, initial.RotateBy(q4p)); }
public void DotProductTest() { var vec1 = new KtVector3D(3, -1, 4); var yaxis = new KtVector3D(0, 1, 0); var xaxis = new KtVector3D(1, 0, 0); var dot = vec1.Cross(yaxis); var dotx = vec1.Cross(xaxis); Console.WriteLine(dot); Console.WriteLine(dotx); Assert.AreEqual(dot, new KtVector3D(-4, 0, 3)); }