Пример #1
0
        public static void LookAt(FPVector3 forward, FPVector3 upwards, out FPMatrix result)
        {
            FPVector3 zaxis = forward; zaxis.Normalize();
            FPVector3 xaxis = FPVector3.Cross(upwards, zaxis); xaxis.Normalize();
            FPVector3 yaxis = FPVector3.Cross(zaxis, xaxis);

            result.M11 = xaxis.x;
            result.M21 = yaxis.x;
            result.M31 = zaxis.x;
            result.M12 = xaxis.y;
            result.M22 = yaxis.y;
            result.M32 = zaxis.y;
            result.M13 = xaxis.z;
            result.M23 = yaxis.z;
            result.M33 = zaxis.z;
        }
Пример #2
0
        public static TSQuaternion AngleAxis(FP angle, FPVector3 axis)
        {
            axis = axis * FP.Deg2Rad;
            axis.Normalize();

            FP halfAngle = angle * FP.Deg2Rad * FP.Half;

            TSQuaternion rotation;
            FP           sin = FP.Sin(halfAngle);

            rotation.x = axis.x * sin;
            rotation.y = axis.y * sin;
            rotation.z = axis.z * sin;
            rotation.w = FP.Cos(halfAngle);

            return(rotation);
        }