3x3 matrix datatype.
    public struct Basis : IEquatable<Basis>

3x3 matrix used for 3D rotation and scale. Contains 3 vector fields x,y and z as its columns, which can be interpreted as the local basis vectors of a transformation. Can also be accessed as array of 3D vectors. These vectors are orthogonal to each other, but are not necessarily normalized. Almost always used as orthogonal basis for a Transform.

For such use, it is composed of a scaling and a rotation matrix, in that order (M = R.S).

Inheritance Chain

Interfaces

Static Properties

    public static  Identity { get; }

Constructors

    public Basis(Quat quat)

Create a rotation matrix from the given quaternion.

    public Basis(Vector3 euler)

Create a rotation matrix (in the YXZ convention: first Z, then X, and Y last) from the specified Euler angles, given in the vector format as (X-angle, Y-angle, Z-angle).

    public Basis(Vector3 axis, float phi)

Create a rotation matrix which rotates around the given axis by the specified angle, in radians. The axis must be a normalized vector.

    public Basis(Vector3 xAxis, Vector3 yAxis, Vector3 zAxis)

Create a matrix from 3 axis vectors.

    public Basis(float xx, float xy, float xz, float yx, float yy, float yz, float zx, float zy, float zz)

    public Basis()

Properties

    public Vector3 Scale { get; }

    public Vector3 this[] { get; set; }

    public float this[] { get; set; }

    public Vector3 x { get; set; }

The basis matrix’s x vector.

    public Vector3 y { get; set; }

The basis matrix’s y vector.

    public Vector3 z { get; set; }

The basis matrix’s z vector.

Methods

    public float Determinant()

Return the determinant of the matrix.

    public override bool Equals(object obj)

    public bool Equals(Basis other)

    public Vector3 GetAxis(int axis)

    public Vector3 GetEuler()

Assuming that the matrix is a proper rotation matrix (orthonormal matrix with determinant +1), return Euler angles (in the YXZ convention: first Z, then X, and Y last). Returned vector contains the rotation angles in the format (X-angle, Y-angle, Z-angle).

    public override int GetHashCode()

    public int GetOrthogonalIndex()

This function considers a discretization of rotations into 24 points on unit sphere, lying along the vectors (x,y,z) with each component being either -1,0 or 1, and returns the index of the point best representing the orientation of the object. It is mainly used by the grid map editor. For further details, refer to Godot source code.

    public Basis Inverse()

Return the inverse of the matrix.

    public Basis Orthonormalized()

Return the orthonormalized version of the matrix (useful to call from time to time to avoid rounding error for orthogonal matrices). This performs a Gram-Schmidt orthonormalization on the basis of the matrix.

    public Quat Quat()

    public Basis Rotated(Vector3 axis, float phi)

Introduce an additional rotation around the given axis by phi (radians). Only relevant when the matrix is being used as a part of Transform. The axis must be a normalized vector.

    public Basis Scaled(Vector3 scale)

Introduce an additional scaling specified by the given 3D scaling factor. Only relevant when the matrix is being used as a part of Transform.

    public void SetAxis(int axis, Vector3 value)

    public float Tdotx(Vector3 with)

Transposed dot product with the x axis of the matrix.

    public float Tdoty(Vector3 with)

Transposed dot product with the y axis of the matrix.

    public float Tdotz(Vector3 with)

Transposed dot product with the z axis of the matrix.

    public override string ToString()

    public string ToString(string format)

    public Basis Transposed()

Return the transposed version of the matrix.

    public Vector3 Xform(Vector3 v)

Return a vector transformed (multiplied) by the matrix.

    public Vector3 XformInv(Vector3 v)

Return a vector transformed (multiplied) by the transposed matrix. Note that this results in a multiplication by the inverse of the matrix only if it represents a rotation-reflection.

Operators

    public static bool operator ==(Basis left, Basis right)

    public static bool operator !=(Basis left, Basis right)

    public static Basis operator *(Basis left, Basis right)
Tags: