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 (due to scaling). 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).

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 column0, Vector3 column1, Vector3 column2)

Create a matrix from 3 axis vectors.

public Basis()

Fields

public Vector3 Row0

public Vector3 Row1

public Vector3 Row2

Properties

public Vector3 Column0 { get; set; }

public Vector3 Column1 { get; set; }

public Vector3 Column2 { get; set; }

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)

[Obsolete("GetAxis is deprecated. Use GetColumn instead.")]
public Vector3 GetAxis(int axis)

public Vector3 GetColumn(int index)

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 Vector3 GetRow(int index)

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). The axis must be a normalized vector.

public Basis Scaled(Vector3 scale)

Introduce an additional scaling specified by the given 3D scaling factor.

public void SetColumn(int index, Vector3 value)

public void SetRow(int index, 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: