Accord.Math.Matrix4x4.CreateLookAt C# (CSharp) Method

CreateLookAt() public static method

Creates a view matrix for the specified camera position and target point.

Camera's "up" vector is supposed to be (0, 1, 0).

public static CreateLookAt ( Vector3 cameraPosition, Vector3 cameraTarget ) : Matrix4x4
cameraPosition Vector3 Position of camera.
cameraTarget Vector3 Target point towards which camera is pointing.
return Matrix4x4
        public static Matrix4x4 CreateLookAt(Vector3 cameraPosition, Vector3 cameraTarget)
        {
            Matrix4x4 m = new Matrix4x4();

            Vector3 vector = cameraPosition - cameraTarget;
            vector.Normalize();

            Vector3 vector2 = Vector3.Cross(new Vector3(0, 1, 0), vector);
            vector2.Normalize();

            Vector3 vector3 = Vector3.Cross(vector, vector2);

            m.V00 = vector2.X;
            m.V01 = vector2.Y;
            m.V02 = vector2.Z;

            m.V10 = vector3.X;
            m.V11 = vector3.Y;
            m.V12 = vector3.Z;

            m.V20 = vector.X;
            m.V21 = vector.Y;
            m.V22 = vector.Z;

            m.V03 = -Vector3.Dot(cameraPosition, vector2);
            m.V13 = -Vector3.Dot(cameraPosition, vector3);
            m.V23 = -Vector3.Dot(cameraPosition, vector);
            m.V33 = 1;

            return m;
        }