| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276 |
- <?xml version="1.0" encoding="UTF-8" ?>
- <class name="Quaternion" version="4.0">
- <brief_description>
- Quaternion.
- </brief_description>
- <description>
- A unit quaternion used for representing 3D rotations. Quaternions need to be normalized to be used for rotation.
- It is similar to Basis, which implements matrix representation of rotations, and can be parametrized using both an axis-angle pair or Euler angles. Basis stores rotation, scale, and shearing, while Quaternion only stores rotation.
- Due to its compactness and the way it is stored in memory, certain operations (obtaining axis-angle and performing SLERP, in particular) are more efficient and robust against floating-point errors.
- </description>
- <tutorials>
- <link title="Using 3D transforms">https://docs.godotengine.org/en/latest/tutorials/3d/using_transforms.html#interpolating-with-quaternions</link>
- <link title="Third Person Shooter Demo">https://godotengine.org/asset-library/asset/678</link>
- </tutorials>
- <constructors>
- <constructor name="Quaternion">
- <return type="Quaternion" />
- <description>
- Constructs a default-initialized quaternion with all components set to [code]0[/code].
- </description>
- </constructor>
- <constructor name="Quaternion">
- <return type="Quaternion" />
- <argument index="0" name="from" type="Quaternion" />
- <description>
- Constructs a [Quaternion] as a copy of the given [Quaternion].
- </description>
- </constructor>
- <constructor name="Quaternion">
- <return type="Quaternion" />
- <argument index="0" name="arc_from" type="Vector3" />
- <argument index="1" name="arc_to" type="Vector3" />
- <description>
- </description>
- </constructor>
- <constructor name="Quaternion">
- <return type="Quaternion" />
- <argument index="0" name="axis" type="Vector3" />
- <argument index="1" name="angle" type="float" />
- <description>
- Constructs a quaternion that will rotate around the given axis by the specified angle. The axis must be a normalized vector.
- </description>
- </constructor>
- <constructor name="Quaternion">
- <return type="Quaternion" />
- <argument index="0" name="euler_yxz" type="Vector3" />
- <description>
- </description>
- </constructor>
- <constructor name="Quaternion">
- <return type="Quaternion" />
- <argument index="0" name="from" type="Basis" />
- <description>
- Constructs a quaternion from the given [Basis].
- </description>
- </constructor>
- <constructor name="Quaternion">
- <return type="Quaternion" />
- <argument index="0" name="x" type="float" />
- <argument index="1" name="y" type="float" />
- <argument index="2" name="z" type="float" />
- <argument index="3" name="w" type="float" />
- <description>
- Constructs a quaternion defined by the given values.
- </description>
- </constructor>
- </constructors>
- <methods>
- <method name="angle_to" qualifiers="const">
- <return type="float" />
- <argument index="0" name="to" type="Quaternion" />
- <description>
- Returns the angle between this quaternion and [code]to[/code]. This is the magnitude of the angle you would need to rotate by to get from one to the other.
- [b]Note:[/b] This method has an abnormally high amount of floating-point error, so methods such as [code]is_zero_approx[/code] will not work reliably.
- </description>
- </method>
- <method name="cubic_slerp" qualifiers="const">
- <return type="Quaternion" />
- <argument index="0" name="b" type="Quaternion" />
- <argument index="1" name="pre_a" type="Quaternion" />
- <argument index="2" name="post_b" type="Quaternion" />
- <argument index="3" name="weight" type="float" />
- <description>
- Performs a cubic spherical interpolation between quaternions [code]pre_a[/code], this vector, [code]b[/code], and [code]post_b[/code], by the given amount [code]weight[/code].
- </description>
- </method>
- <method name="dot" qualifiers="const">
- <return type="float" />
- <argument index="0" name="with" type="Quaternion" />
- <description>
- Returns the dot product of two quaternions.
- </description>
- </method>
- <method name="get_angle" qualifiers="const">
- <return type="float" />
- <description>
- </description>
- </method>
- <method name="get_axis" qualifiers="const">
- <return type="Vector3" />
- <description>
- </description>
- </method>
- <method name="get_euler" qualifiers="const">
- <return type="Vector3" />
- <description>
- Returns Euler angles (in the YXZ convention: when decomposing, first Z, then X, and Y last) corresponding to the rotation represented by the unit quaternion. Returned vector contains the rotation angles in the format (X angle, Y angle, Z angle).
- </description>
- </method>
- <method name="inverse" qualifiers="const">
- <return type="Quaternion" />
- <description>
- Returns the inverse of the quaternion.
- </description>
- </method>
- <method name="is_equal_approx" qualifiers="const">
- <return type="bool" />
- <argument index="0" name="to" type="Quaternion" />
- <description>
- Returns [code]true[/code] if this quaternion and [code]quat[/code] are approximately equal, by running [method @GlobalScope.is_equal_approx] on each component.
- </description>
- </method>
- <method name="is_normalized" qualifiers="const">
- <return type="bool" />
- <description>
- Returns whether the quaternion is normalized or not.
- </description>
- </method>
- <method name="length" qualifiers="const">
- <return type="float" />
- <description>
- Returns the length of the quaternion.
- </description>
- </method>
- <method name="length_squared" qualifiers="const">
- <return type="float" />
- <description>
- Returns the length of the quaternion, squared.
- </description>
- </method>
- <method name="normalized" qualifiers="const">
- <return type="Quaternion" />
- <description>
- Returns a copy of the quaternion, normalized to unit length.
- </description>
- </method>
- <method name="slerp" qualifiers="const">
- <return type="Quaternion" />
- <argument index="0" name="to" type="Quaternion" />
- <argument index="1" name="weight" type="float" />
- <description>
- Returns the result of the spherical linear interpolation between this quaternion and [code]to[/code] by amount [code]weight[/code].
- [b]Note:[/b] Both quaternions must be normalized.
- </description>
- </method>
- <method name="slerpni" qualifiers="const">
- <return type="Quaternion" />
- <argument index="0" name="to" type="Quaternion" />
- <argument index="1" name="weight" type="float" />
- <description>
- Returns the result of the spherical linear interpolation between this quaternion and [code]to[/code] by amount [code]weight[/code], but without checking if the rotation path is not bigger than 90 degrees.
- </description>
- </method>
- </methods>
- <members>
- <member name="w" type="float" setter="" getter="" default="1.0">
- W component of the quaternion (real part).
- Quaternion components should usually not be manipulated directly.
- </member>
- <member name="x" type="float" setter="" getter="" default="0.0">
- X component of the quaternion (imaginary [code]i[/code] axis part).
- Quaternion components should usually not be manipulated directly.
- </member>
- <member name="y" type="float" setter="" getter="" default="0.0">
- Y component of the quaternion (imaginary [code]j[/code] axis part).
- Quaternion components should usually not be manipulated directly.
- </member>
- <member name="z" type="float" setter="" getter="" default="0.0">
- Z component of the quaternion (imaginary [code]k[/code] axis part).
- Quaternion components should usually not be manipulated directly.
- </member>
- </members>
- <constants>
- <constant name="IDENTITY" value="Quaternion(0, 0, 0, 1)">
- The identity quaternion, representing no rotation. Equivalent to an identity [Basis] matrix. If a vector is transformed by an identity quaternion, it will not change.
- </constant>
- </constants>
- <operators>
- <operator name="operator !=">
- <return type="bool" />
- <description>
- </description>
- </operator>
- <operator name="operator !=">
- <return type="bool" />
- <argument index="0" name="right" type="Quaternion" />
- <description>
- </description>
- </operator>
- <operator name="operator *">
- <return type="Quaternion" />
- <argument index="0" name="right" type="Quaternion" />
- <description>
- </description>
- </operator>
- <operator name="operator *">
- <return type="Vector3" />
- <argument index="0" name="right" type="Vector3" />
- <description>
- </description>
- </operator>
- <operator name="operator *">
- <return type="Quaternion" />
- <argument index="0" name="right" type="float" />
- <description>
- </description>
- </operator>
- <operator name="operator *">
- <return type="Quaternion" />
- <argument index="0" name="right" type="int" />
- <description>
- </description>
- </operator>
- <operator name="operator +">
- <return type="Quaternion" />
- <argument index="0" name="right" type="Quaternion" />
- <description>
- </description>
- </operator>
- <operator name="operator -">
- <return type="Quaternion" />
- <argument index="0" name="right" type="Quaternion" />
- <description>
- </description>
- </operator>
- <operator name="operator /">
- <return type="Quaternion" />
- <argument index="0" name="right" type="float" />
- <description>
- </description>
- </operator>
- <operator name="operator /">
- <return type="Quaternion" />
- <argument index="0" name="right" type="int" />
- <description>
- </description>
- </operator>
- <operator name="operator ==">
- <return type="bool" />
- <description>
- </description>
- </operator>
- <operator name="operator ==">
- <return type="bool" />
- <argument index="0" name="right" type="Quaternion" />
- <description>
- </description>
- </operator>
- <operator name="operator []">
- <return type="float" />
- <argument index="0" name="index" type="int" />
- <description>
- </description>
- </operator>
- <operator name="operator unary+">
- <return type="Quaternion" />
- <description>
- </description>
- </operator>
- <operator name="operator unary-">
- <return type="Quaternion" />
- <description>
- </description>
- </operator>
- </operators>
- </class>
|