2017-09-12 22:42:36 +02:00
<?xml version="1.0" encoding="UTF-8" ?>
2020-02-01 02:03:48 +01:00
<class name= "Quat" version= "4.0" >
2017-09-12 22:42:36 +02:00
<brief_description >
Quaternion.
</brief_description>
<description >
2018-05-12 02:14:39 +02:00
A unit quaternion used for representing 3D rotations.
2019-06-22 01:04:47 +02:00
It is similar to [Basis], which implements matrix representation of rotations, and can be parametrized using both an axis-angle pair or Euler angles. But 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.
2018-05-12 02:14:39 +02:00
Quaternions need to be (re)normalized.
2017-09-12 22:42:36 +02:00
</description>
<tutorials >
2018-11-05 08:46:27 +01:00
<link > https://docs.godotengine.org/en/latest/tutorials/3d/using_transforms.html#interpolating-with-quaternions</link>
2017-09-12 22:42:36 +02:00
</tutorials>
<methods >
<method name= "Quat" >
<return type= "Quat" >
</return>
2018-05-28 14:53:15 +02:00
<argument index= "0" name= "from" type= "Basis" >
2017-09-12 22:42:36 +02:00
</argument>
<description >
2018-05-28 14:53:15 +02:00
Returns the rotation matrix corresponding to the given quaternion.
2017-09-12 22:42:36 +02:00
</description>
</method>
<method name= "Quat" >
<return type= "Quat" >
</return>
2018-05-28 14:53:15 +02:00
<argument index= "0" name= "euler" type= "Vector3" >
2017-09-12 22:42:36 +02:00
</argument>
<description >
2019-06-22 01:04:47 +02:00
Returns a quaternion that will perform a rotation specified by Euler angles (in the YXZ convention: first Z, then X, and Y last), given in the vector format as (X angle, Y angle, Z angle).
2017-09-12 22:42:36 +02:00
</description>
</method>
2018-05-12 02:14:39 +02:00
<method name= "Quat" >
<return type= "Quat" >
</return>
2018-05-28 14:53:15 +02:00
<argument index= "0" name= "axis" type= "Vector3" >
</argument>
<argument index= "1" name= "angle" type= "float" >
2018-05-12 02:14:39 +02:00
</argument>
<description >
2018-05-28 14:53:15 +02:00
Returns a quaternion that will rotate around the given axis by the specified angle. The axis must be a normalized vector.
2018-05-12 02:14:39 +02:00
</description>
</method>
2017-09-12 22:42:36 +02:00
<method name= "Quat" >
<return type= "Quat" >
</return>
2018-05-28 14:53:15 +02:00
<argument index= "0" name= "x" type= "float" >
</argument>
<argument index= "1" name= "y" type= "float" >
</argument>
<argument index= "2" name= "z" type= "float" >
</argument>
<argument index= "3" name= "w" type= "float" >
2017-09-12 22:42:36 +02:00
</argument>
<description >
2018-05-28 14:53:15 +02:00
Returns a quaternion defined by these values.
2017-09-12 22:42:36 +02:00
</description>
</method>
<method name= "cubic_slerp" >
<return type= "Quat" >
</return>
<argument index= "0" name= "b" type= "Quat" >
</argument>
<argument index= "1" name= "pre_a" type= "Quat" >
</argument>
<argument index= "2" name= "post_b" type= "Quat" >
</argument>
<argument index= "3" name= "t" type= "float" >
</argument>
<description >
2017-10-22 22:43:35 +02:00
Performs a cubic spherical-linear interpolation with another quaternion.
2017-09-12 22:42:36 +02:00
</description>
</method>
<method name= "dot" >
<return type= "float" >
</return>
<argument index= "0" name= "b" type= "Quat" >
</argument>
<description >
Returns the dot product of two quaternions.
</description>
</method>
2018-05-12 02:14:39 +02:00
<method name= "get_euler" >
<return type= "Vector3" >
</return>
<description >
2019-06-22 01:04:47 +02:00
Returns Euler angles (in the YXZ convention: 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).
2018-05-12 02:14:39 +02:00
</description>
</method>
2017-09-12 22:42:36 +02:00
<method name= "inverse" >
<return type= "Quat" >
</return>
<description >
Returns the inverse of the quaternion.
</description>
</method>
2019-11-08 08:33:48 +01:00
<method name= "is_equal_approx" >
<return type= "bool" >
</return>
<argument index= "0" name= "quat" type= "Quat" >
</argument>
<description >
2019-11-30 21:08:50 +01:00
Returns [code]true[/code] if this quaterion and [code]quat[/code] are approximately equal, by running [method @GDScript.is_equal_approx] on each component.
2019-11-08 08:33:48 +01:00
</description>
</method>
2017-09-12 22:42:36 +02:00
<method name= "is_normalized" >
<return type= "bool" >
</return>
<description >
Returns whether the quaternion is normalized or not.
</description>
</method>
<method name= "length" >
<return type= "float" >
</return>
<description >
Returns the length of the quaternion.
</description>
</method>
<method name= "length_squared" >
<return type= "float" >
</return>
<description >
Returns the length of the quaternion, squared.
</description>
</method>
<method name= "normalized" >
<return type= "Quat" >
</return>
<description >
Returns a copy of the quaternion, normalized to unit length.
</description>
</method>
2018-05-12 02:14:39 +02:00
<method name= "set_axis_angle" >
2020-02-22 15:16:32 +01:00
<return type= "void" >
</return>
2018-05-12 02:14:39 +02:00
<argument index= "0" name= "axis" type= "Vector3" >
</argument>
2018-05-28 14:53:15 +02:00
<argument index= "1" name= "angle" type= "float" >
2018-05-12 02:14:39 +02:00
</argument>
<description >
2019-06-22 01:04:47 +02:00
Sets the quaternion to a rotation which rotates around axis by the specified angle, in radians. The axis must be a normalized vector.
2018-05-12 02:14:39 +02:00
</description>
</method>
<method name= "set_euler" >
2020-02-22 15:16:32 +01:00
<return type= "void" >
</return>
2018-05-12 02:14:39 +02:00
<argument index= "0" name= "euler" type= "Vector3" >
</argument>
<description >
2019-06-22 01:04:47 +02:00
Sets the quaternion to a rotation specified by Euler angles (in the YXZ convention: first Z, then X, and Y last), given in the vector format as (X angle, Y angle, Z angle).
2018-05-12 02:14:39 +02:00
</description>
</method>
2017-09-12 22:42:36 +02:00
<method name= "slerp" >
<return type= "Quat" >
</return>
<argument index= "0" name= "b" type= "Quat" >
</argument>
<argument index= "1" name= "t" type= "float" >
</argument>
<description >
2017-10-22 22:43:35 +02:00
Performs a spherical-linear interpolation with another quaternion.
2017-09-12 22:42:36 +02:00
</description>
</method>
<method name= "slerpni" >
<return type= "Quat" >
</return>
<argument index= "0" name= "b" type= "Quat" >
</argument>
<argument index= "1" name= "t" type= "float" >
</argument>
<description >
2017-10-24 19:22:37 +02:00
Performs a spherical-linear interpolation with another quaterion without checking if the rotation path is not bigger than 90°.
2017-09-12 22:42:36 +02:00
</description>
</method>
<method name= "xform" >
<return type= "Vector3" >
</return>
<argument index= "0" name= "v" type= "Vector3" >
</argument>
<description >
2017-10-22 22:43:35 +02:00
Transforms the vector [code]v[/code] by this quaternion.
2017-09-12 22:42:36 +02:00
</description>
</method>
</methods>
<members >
2019-06-29 12:38:01 +02:00
<member name= "w" type= "float" setter= "" getter= "" default= "1.0" >
2019-06-29 15:24:23 +02:00
W component of the quaternion.
2017-09-12 22:42:36 +02:00
</member>
2019-06-29 12:38:01 +02:00
<member name= "x" type= "float" setter= "" getter= "" default= "0.0" >
2019-06-29 15:24:23 +02:00
X component of the quaternion.
2017-09-12 22:42:36 +02:00
</member>
2019-06-29 12:38:01 +02:00
<member name= "y" type= "float" setter= "" getter= "" default= "0.0" >
2019-06-29 15:24:23 +02:00
Y component of the quaternion.
2017-09-12 22:42:36 +02:00
</member>
2019-06-29 12:38:01 +02:00
<member name= "z" type= "float" setter= "" getter= "" default= "0.0" >
2019-06-29 15:24:23 +02:00
Z component of the quaternion.
2017-09-12 22:42:36 +02:00
</member>
</members>
<constants >
2018-08-21 00:35:30 +02:00
<constant name= "IDENTITY" value= "Quat( 0, 0, 0, 1 )" >
2020-01-26 06:59:51 +01:00
The identity rotation. Equivalent to an identity matrix. If a vector is transformed by an identity quaternion, it will not change.
2018-08-21 00:35:30 +02:00
</constant>
2017-09-12 22:42:36 +02:00
</constants>
</class>