예제 #1
0
        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);
        }
예제 #2
0
        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)));
        }
예제 #3
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));
 }