Exemplo n.º 1
0
        public void powTest()
        {
            LDQuat quat     = new LDQuat();
            LDQuat actual   = new LDQuat();
            LDQuat expected = new LDQuat();
            //ld_float delta = 0.00001f;
            ld_float exponent;

            // Input : quat1{x = 0.0, y = 0.0, z = 0.0, w = 1.0}, exponent = 0.0 (単位クォータニオン)
            quat.x     = 0.0f;
            quat.y     = 0.0f;
            quat.z     = 0.0f;
            quat.w     = 1.0f;
            exponent   = 0.0f;
            expected.x = 0.0f;
            expected.y = 0.0f;
            expected.z = 0.0f;
            expected.w = 1.0f;
            actual     = quat.pow(exponent);
            TestUtil.COMPARE(expected.x, actual.x);
            TestUtil.COMPARE(expected.y, actual.y);
            TestUtil.COMPARE(expected.z, actual.z);
            TestUtil.COMPARE(expected.w, actual.w);

            // Input : quat1{x = 0.1, y = 0.2, z = 0.3, w = 0.4}, exponent = 2.0 (任意の値)
            quat.x   = 0.1f;
            quat.y   = 0.2f;
            quat.z   = 0.3f;
            quat.w   = 0.4f;
            exponent = 2.0f;
            ld_float alpha    = (float)Math.Acos(quat.w);
            ld_float newAlpha = alpha * exponent;
            ld_float mult     = (float)Math.Sin(newAlpha) / (float)Math.Sin(alpha);

            expected.x = quat.x * mult;
            expected.y = quat.y * mult;
            expected.z = quat.z * mult;
            expected.w = (float)Math.Cos(newAlpha);
            actual     = quat.pow(exponent);
            TestUtil.COMPARE(expected.x, actual.x);
            TestUtil.COMPARE(expected.y, actual.y);
            TestUtil.COMPARE(expected.z, actual.z);
            TestUtil.COMPARE(expected.w, actual.w);
        }
Exemplo n.º 2
0
        public void powTest()
        {
            LDQuat quat = new LDQuat();
            LDQuat actual = new LDQuat();
            LDQuat expected = new LDQuat();
            //ld_float delta = 0.00001f;
            ld_float exponent;

            // Input : quat1{x = 0.0, y = 0.0, z = 0.0, w = 1.0}, exponent = 0.0 (単位クォータニオン)
            quat.x = 0.0f;
            quat.y = 0.0f;
            quat.z = 0.0f;
            quat.w = 1.0f;
            exponent = 0.0f;
            expected.x = 0.0f;
            expected.y = 0.0f;
            expected.z = 0.0f;
            expected.w = 1.0f;
            actual = quat.pow(exponent);
            TestUtil.COMPARE(expected.x, actual.x);
            TestUtil.COMPARE(expected.y, actual.y);
            TestUtil.COMPARE(expected.z, actual.z);
            TestUtil.COMPARE(expected.w, actual.w);

            // Input : quat1{x = 0.1, y = 0.2, z = 0.3, w = 0.4}, exponent = 2.0 (任意の値)
            quat.x = 0.1f;
            quat.y = 0.2f;
            quat.z = 0.3f;
            quat.w = 0.4f;
            exponent = 2.0f;
            ld_float alpha = (float)Math.Acos(quat.w);
            ld_float newAlpha = alpha * exponent;
            ld_float mult = (float)Math.Sin(newAlpha) / (float)Math.Sin(alpha);
            expected.x = quat.x * mult;
            expected.y = quat.y * mult;
            expected.z = quat.z * mult;
            expected.w = (float)Math.Cos(newAlpha);
            actual = quat.pow(exponent);
            TestUtil.COMPARE(expected.x, actual.x);
            TestUtil.COMPARE(expected.y, actual.y);
            TestUtil.COMPARE(expected.z, actual.z);
            TestUtil.COMPARE(expected.w, actual.w);
        }