예제 #1
0
        public static TSVector3 Normalize(TSVector3 value)
        {
            TSVector3 result;

            TSVector3.Normalize(ref value, out result);
            return(result);
        }
예제 #2
0
        public static void LookAt(TSVector3 forward, TSVector3 upwards, out TSMatrix result)
        {
            TSVector3 zaxis = forward; zaxis.Normalize();
            TSVector3 xaxis = TSVector3.Cross(upwards, zaxis); xaxis.Normalize();
            TSVector3 yaxis = TSVector3.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;
        }
예제 #3
0
        public static TSQuaternion AngleAxis(FP angle, TSVector3 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);
        }