public void Conversion() { Vector3d v = new Vector3d(1.0, 1.0, 1.0); Cylindricald c = v.Cylindrical; Assert.IsTrue(Vector3d.NearEqual(v, c.Cartesian)); Assert.IsTrue(MathHelper.NearEqual(v.Length, c.Length)); Assert.AreEqual(c.Phi, c.Polar.Phi); Assert.AreEqual(c.R, c.Polar.R); }
public void Transform() { Quaterniond q2 = Quaterniond.FromAxis(new Vector3d(0, 1, 0), 0.0); Assert.IsTrue(q2 == Quaterniond.Identity); Quaterniond q = Quaterniond.FromAxis(new Vector3d(0, 0, 1), (double)(global::System.Math.PI / 2.0)); Matrix3x3d m = q.ToMatrix(); Assert.IsTrue(Vector3d.NearEqual(m * Vector3d.AxisY, new Vector3d(-1, 0, 0))); Assert.IsTrue(Vector3d.NearEqual(q * Vector3d.AxisY, new Vector3d(-1, 0, 0))); }
/// <summary> /// Are vectors nearly equal. /// </summary> /// <param name="q1">The quaternion to compare.</param> /// <param name="q2">The other quaternion.</param> /// <param name="eps">Maximum difference.</param> public static bool NearEqual(Quaterniond q1, Quaterniond q2, double eps) { return(MathHelper.NearEqual(q2.Re, q1.Re, eps) && Vector3d.NearEqual(q1.Im, q2.Im, eps)); }