コード例 #1
0
        public void TestStaticFunctions()
        {
            Quaternion2D q1 = new Quaternion2D(2, 4);
            Quaternion2D q2 = new Quaternion2D(3, 5);

            Assert.IsTrue(Mathf.Equals(q1, new Quaternion2D(2.000009f, 4)));
            Assert.IsFalse(Mathf.Equals(q1, new Quaternion2D(2.00001f, 4)));
            Assert.IsFalse(Mathf.Equals(q1, new Quaternion2D(2.000009f, 4.00001f)));

            Assert.AreEqual(Quaternion2D.Length(q1), Mathf.Sqrt(20));

            float l = q1.length;

            Assert.AreEqual(Quaternion2D.Normalize(q1), new Quaternion2D(2 / l, 4 / l));

            Assert.AreEqual(Quaternion2D.Angle(q1, q2), 0f);
            //Assert.AreEqual(Quaternion2D.Angle(q1.normalized, q2.normalized), 0.153542951f);
            Assert.IsTrue(Mathf.Equals(Quaternion2D.Angle(q1.normalized, q2.normalized), 0.15354f));

            Assert.AreEqual(Quaternion2D.Dot(q1, q2), 26);

            Assert.AreEqual(Quaternion2D.Inverse(q1), new Quaternion2D(-2, 4));

            Assert.AreEqual(Quaternion2D.Slerp(q1, q2, 0), q1);
            Assert.AreEqual(Quaternion2D.Slerp(q1, q2, 0.5f), new Quaternion2D(2.5f, 4.5f));
            Assert.AreEqual(Quaternion2D.Slerp(q1, q2, 1), q2);

            Assert.AreEqual(Quaternion2D.FromAngle(0.927295268f),
                            Quaternion2D.Normalize(new Quaternion2D(2, 4)));

            Assert.AreEqual(Quaternion2D.FromToRotation(new Vector3(-1, -3), new Vector3(2, 4)),
                            new Quaternion2D(-0.9974842f, 0.07088902f));
        }
コード例 #2
0
        public void TestConstructor()
        {
            Quaternion2D q = new Quaternion2D();

            Assert.AreEqual(q.y, 0);
            Assert.AreEqual(q.w, 0);
        }
コード例 #3
0
        public void TestFunctions()
        {
            Quaternion2D q = new Quaternion2D();

            q.SetIdentity();
            Assert.AreEqual(q, new Quaternion2D(0, 1));

            q = new Quaternion2D(2, 4);
            float l = q.length;

            q.Normalize();
            Assert.AreEqual(q, new Quaternion2D(2 / l, 4 / l));

            q = new Quaternion2D(2, 4);

            q.Inverse();
            Assert.AreEqual(q, new Quaternion2D(-2, 4));

            q.SetIdentity();
            q.angle = 0.927295268f;
            Assert.AreEqual(q, Quaternion2D.Normalize(new Quaternion2D(2, 4)));

            q.SetIdentity();
            q.SetFromTo(new Vector2(-1, -3), new Vector2(2, 4));
            Assert.AreEqual(q, new Quaternion2D(-0.9974842f, 0.07088902f));

            q = Quaternion2D.LookRotation(new Vector2(1, 3));
            Assert.AreEqual(q, new Quaternion2D(0.1601822f, 0.9870874f));
        }
コード例 #4
0
        public void TestObject()
        {
            Quaternion2D q1 = new Quaternion2D(2, 4);
            Quaternion2D q2 = new Quaternion2D(3, 5);

            Assert.AreEqual(q1.GetHashCode(), (new Quaternion2D(2, 4)).GetHashCode());
            Assert.AreNotEqual(q1.GetHashCode(), q2.GetHashCode());

            object o = new object();

            Assert.AreNotEqual(q1, o);
            o = q1;
            Assert.AreEqual(q1, o);
            o = q2;
            Assert.AreNotEqual(q1, o);

            StringAssert.AreEqualIgnoringCase(q1.ToString(), "(2, 4)");
            StringAssert.AreNotEqualIgnoringCase(q1.ToString(), q2.ToString());

            Quaternion2D q = new Quaternion2D();

            q.angle = Mathf.PI * 0.3f;
            Rotation2D rot = new Rotation2D(Mathf.PI * 0.3f);

            Assert.AreEqual(q * Vector2.right, rot.x);
        }
コード例 #5
0
        public void TestProperties()
        {
            Quaternion2D q = new Quaternion2D(2, 4);

            Assert.AreEqual(q.length, Mathf.Sqrt(20));
            q.Normalize();

            Assert.AreEqual(q.angle, 0.927295268f);
        }
コード例 #6
0
        public void TestOperator()
        {
            Quaternion2D q1 = new Quaternion2D(2, 4);
            Quaternion2D q2 = new Quaternion2D(3, 5);

            Assert.IsTrue(q1 == (new Quaternion2D(2, 4)));
            Assert.IsFalse(q1 != (new Quaternion2D(2, 4)));
            Assert.IsTrue(q1 == q2);
            Assert.IsFalse(q1 != q2);
            Assert.IsTrue(q1.normalized == q1.normalized);
            Assert.IsFalse(q1.normalized != q1.normalized);
            Assert.IsTrue(q1.normalized != q2.normalized);
            Assert.IsFalse(q1.normalized == q2.normalized);

            Assert.AreEqual(q1 * q2, new Quaternion2D(22, 14));
            Assert.AreEqual(q1 / 2, new Quaternion2D(1, 2));

            Vector2 v = new Vector2(1, 4);

            Assert.AreEqual((q1.normalized * v), new Vector2(3.8f, 1.6f));
        }
コード例 #7
0
ファイル: Hook.cs プロジェクト: alexeous/Their-Own-scripts
        private void Update()
        {
            switch (state)
            {
            case State.Launched:
                ProcessLaunching(Time.deltaTime);
                break;

            case State.Attached:
                ProcessUnitPulling(Time.deltaTime);
                break;

            case State.Retracting:
                ProcesRetracting(Time.deltaTime);
                break;
            }

            if (state != State.Retracted)
            {
                lineRenderer.SetPosition(0, origin.position);
                lineRenderer.SetPosition(1, transform.position);
                transform.rotation = Quaternion2D.LookRotation(transform.position - origin.position);
            }
        }
コード例 #8
0
 public Transform(float angle)
 {
     Position     = Vector2.Zero;
     Quaternion2D = new Quaternion2D(angle);
 }
コード例 #9
0
 public Transform(Vector2 position, float angle)
 {
     Position     = position;
     Quaternion2D = new Quaternion2D(angle);
 }
コード例 #10
0
 public static void AlignWithRay(this Transform transform, Ray ray)
 {
     transform.SetPositionAndRotation(ray.origin, Quaternion2D.LookRotation(ray.direction));
 }