Add more examples to Basis' Documentation

This commit is contained in:
Micky 2023-12-31 12:00:50 +01:00
parent 13a0d6e9b2
commit e88a819194

View file

@ -71,6 +71,12 @@
<param index="1" name="order" type="int" default="2" /> <param index="1" name="order" type="int" default="2" />
<description> <description>
Constructs a pure rotation Basis matrix from Euler angles in the specified Euler rotation order. By default, use YXZ order (most common). See the [enum EulerOrder] enum for possible values. Constructs a pure rotation Basis matrix from Euler angles in the specified Euler rotation order. By default, use YXZ order (most common). See the [enum EulerOrder] enum for possible values.
[codeblock]
# Creates a Basis whose z axis points down.
var my_basis = Basis.from_euler(Vector3(TAU / 4, 0, 0))
print(my_basis.z) # Prints (0, -1, 0).
[/codeblock]
</description> </description>
</method> </method>
<method name="from_scale" qualifiers="static"> <method name="from_scale" qualifiers="static">
@ -78,6 +84,13 @@
<param index="0" name="scale" type="Vector3" /> <param index="0" name="scale" type="Vector3" />
<description> <description>
Constructs a pure scale basis matrix with no rotation or shearing. The scale values are set as the diagonal of the matrix, and the other parts of the matrix are zero. Constructs a pure scale basis matrix with no rotation or shearing. The scale values are set as the diagonal of the matrix, and the other parts of the matrix are zero.
[codeblock]
var my_basis = Basis.from_scale(Vector3(2, 4, 8))
print(my_basis.x) # Prints (2, 0, 0).
print(my_basis.y) # Prints (0, 4, 0).
print(my_basis.z) # Prints (0, 0, 8).
[/codeblock]
</description> </description>
</method> </method>
<method name="get_euler" qualifiers="const"> <method name="get_euler" qualifiers="const">
@ -98,6 +111,18 @@
<return type="Vector3" /> <return type="Vector3" />
<description> <description>
Assuming that the matrix is the combination of a rotation and scaling, return the absolute value of scaling factors along each axis. Assuming that the matrix is the combination of a rotation and scaling, return the absolute value of scaling factors along each axis.
[codeblock]
var my_basis = Basis(
Vector3(2, 0, 0),
Vector3(0, 4, 0),
Vector3(0, 0, 8)
)
# Rotating the Basis in any way preserves its scale.
my_basis = my_basis.rotated(Vector3.UP, TAU / 2)
my_basis = my_basis.rotated(Vector3.RIGHT, TAU / 4)
print(my_basis.get_scale()) # Prints (2, 4, 8).
[/codeblock]
</description> </description>
</method> </method>
<method name="inverse" qualifiers="const"> <method name="inverse" qualifiers="const">
@ -140,6 +165,14 @@
<return type="Basis" /> <return type="Basis" />
<description> <description>
Returns 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. Returns 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.
[codeblock]
# Rotate this Node3D every frame.
func _process(delta):
basis = basis.rotated(Vector3.UP, TAU * delta)
basis = basis.rotated(Vector3.RIGHT, TAU * delta)
basis = basis.orthonormalized()
[/codeblock]
</description> </description>
</method> </method>
<method name="rotated" qualifiers="const"> <method name="rotated" qualifiers="const">
@ -148,6 +181,14 @@
<param index="1" name="angle" type="float" /> <param index="1" name="angle" type="float" />
<description> <description>
Introduce an additional rotation around the given axis by [param angle] (in radians). The axis must be a normalized vector. Introduce an additional rotation around the given axis by [param angle] (in radians). The axis must be a normalized vector.
[codeblock]
var my_basis = Basis.IDENTITY
var angle = TAU / 2
my_basis = my_basis.rotated(Vector3.UP, angle) # Rotate around the up axis (yaw)
my_basis = my_basis.rotated(Vector3.RIGHT, angle) # Rotate around the right axis (pitch)
my_basis = my_basis.rotated(Vector3.BACK, angle) # Rotate around the back axis (roll)
[/codeblock]
</description> </description>
</method> </method>
<method name="scaled" qualifiers="const"> <method name="scaled" qualifiers="const">
@ -155,6 +196,18 @@
<param index="0" name="scale" type="Vector3" /> <param index="0" name="scale" type="Vector3" />
<description> <description>
Introduce an additional scaling specified by the given 3D scaling factor. Introduce an additional scaling specified by the given 3D scaling factor.
[codeblock]
var my_basis = Basis(
Vector3(1, 1, 1),
Vector3(2, 2, 2),
Vector3(3, 3, 3)
)
my_basis = my_basis.scaled(Vector3(0, 2, -2))
print(my_basis.x) # Prints (0, 2, -2).
print(my_basis.y) # Prints (0, 4, -4).
print(my_basis.z) # Prints (0, 6, -6).
[/codeblock]
</description> </description>
</method> </method>
<method name="slerp" qualifiers="const"> <method name="slerp" qualifiers="const">
@ -190,6 +243,18 @@
<return type="Basis" /> <return type="Basis" />
<description> <description>
Returns the transposed version of the matrix. Returns the transposed version of the matrix.
[codeblock]
var my_basis = Basis(
Vector3(1, 2, 3),
Vector3(4, 5, 6),
Vector3(7, 8, 9)
)
my_basis = my_basis.transposed()
print(my_basis.x) # Prints (1, 4, 7).
print(my_basis.y) # Prints (2, 5, 8).
print(my_basis.z) # Prints (3, 6, 9).
[/codeblock]
</description> </description>
</method> </method>
</methods> </methods>