Пример #1
0
 public static void Translation(Vector3 position, out Matrix4 result)
 {
     Translation(position.X, position.Y, position.Z, out result);
 }
Пример #2
0
 public static void Scaling(float scale, out Matrix4 result)
 {
     Scaling(scale, scale, scale, out result);
 }
Пример #3
0
 public static void Translation(float x, float y, float z, out Matrix4 result)
 {
     result = new Matrix4(new[]
     {
         1, 0, 0, x,
         0, 1, 0, y,
         0, 0, 1, z,
         0, 0, 0, 1
     });
 }
Пример #4
0
 public static void Scaling(float xScale, float yScale, float zScale, out Matrix4 result)
 {
     result = new Matrix4(new[]
     {
         xScale, 0, 0, 0,
         0, yScale, 0, 0,
         0, 0, zScale, 0,
         0, 0, 0, 1
     });
 }
Пример #5
0
        public static void RotationZ(float theta, out Matrix4 result)
        {
            var cos = (float)Math.Cos(theta);
            var sin = (float)Math.Sin(theta);

            result = new Matrix4(new[]
            {
                cos, -sin, 0, 0,
                sin, cos, 0, 0,
                0, 0, 1, 0,
                0, 0, 0, 1
            });
        }
Пример #6
0
        public static void Rotation(float thetaX, float thetaY, float thetaZ, out Matrix4 result)
        {
            Matrix4 xRotation;
            Matrix4 yRotation;
            Matrix4 zRotation;

            RotationX(thetaX, out xRotation);
            RotationY(thetaY, out yRotation);
            RotationZ(thetaZ, out zRotation);

            result = xRotation * yRotation * zRotation;
        }
Пример #7
0
 public static void Multiply(ref Matrix4 lhs, ref Vector3 rhs, out Vector3 result)
 {
     var x = lhs.M11 * rhs.X + lhs.M12 * rhs.Y + lhs.M13 * rhs.Z + lhs.M14;
     var y = lhs.M21 * rhs.X + lhs.M22 * rhs.Y + lhs.M23 * rhs.Z + lhs.M24;
     var z = lhs.M31 * rhs.X + lhs.M32 * rhs.Y + lhs.M33 * rhs.Z + lhs.M34;
     result = new Vector3(x, y, z);
 }
Пример #8
0
        public static void Multiply(ref Matrix4 lhs, ref Matrix4 rhs, out Matrix4 result)
        {
            var items = new[]
            {
                lhs.M11 * rhs.M11 + lhs.M12 * rhs.M21 + lhs.M13 * rhs.M31 + lhs.M14 * rhs.M41,
                lhs.M11 * rhs.M12 + lhs.M12 * rhs.M22 + lhs.M13 * rhs.M32 + lhs.M14 * rhs.M42,
                lhs.M11 * rhs.M13 + lhs.M12 * rhs.M23 + lhs.M13 * rhs.M33 + lhs.M14 * rhs.M43,
                lhs.M11 * rhs.M14 + lhs.M12 * rhs.M24 + lhs.M13 * rhs.M34 + lhs.M14 * rhs.M44,

                lhs.M21 * rhs.M11 + lhs.M22 * rhs.M21 + lhs.M23 * rhs.M31 + lhs.M24 * rhs.M41,
                lhs.M21 * rhs.M12 + lhs.M22 * rhs.M22 + lhs.M23 * rhs.M32 + lhs.M24 * rhs.M42,
                lhs.M21 * rhs.M13 + lhs.M22 * rhs.M23 + lhs.M23 * rhs.M33 + lhs.M24 * rhs.M43,
                lhs.M21 * rhs.M14 + lhs.M22 * rhs.M24 + lhs.M23 * rhs.M34 + lhs.M24 * rhs.M44,

                lhs.M31 * rhs.M11 + lhs.M32 * rhs.M21 + lhs.M33 * rhs.M31 + lhs.M34 * rhs.M41,
                lhs.M31 * rhs.M12 + lhs.M32 * rhs.M22 + lhs.M33 * rhs.M32 + lhs.M34 * rhs.M42,
                lhs.M31 * rhs.M13 + lhs.M32 * rhs.M23 + lhs.M33 * rhs.M33 + lhs.M34 * rhs.M43,
                lhs.M31 * rhs.M14 + lhs.M32 * rhs.M24 + lhs.M33 * rhs.M34 + lhs.M34 * rhs.M44,

                lhs.M41 * rhs.M11 + lhs.M42 * rhs.M21 + lhs.M43 * rhs.M31 + lhs.M44 * rhs.M41,
                lhs.M41 * rhs.M12 + lhs.M42 * rhs.M22 + lhs.M43 * rhs.M32 + lhs.M44 * rhs.M42,
                lhs.M41 * rhs.M13 + lhs.M42 * rhs.M23 + lhs.M43 * rhs.M33 + lhs.M44 * rhs.M43,
                lhs.M41 * rhs.M14 + lhs.M42 * rhs.M24 + lhs.M43 * rhs.M34 + lhs.M44 * rhs.M44,
            };

            result = new Matrix4(items);
        }