mirror of
				https://github.com/godotengine/godot.git
				synced 2025-10-31 05:31:01 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			314 lines
		
	
	
	
		
			14 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
			
		
		
	
	
			314 lines
		
	
	
	
		
			14 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
| <?xml version="1.0" encoding="UTF-8" ?>
 | |
| <class name="Quaternion" version="4.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
 | |
| 	<brief_description>
 | |
| 		A unit quaternion used for representing 3D rotations.
 | |
| 	</brief_description>
 | |
| 	<description>
 | |
| 		Quaternions are similar to [Basis], which implements the matrix representation of rotations. Unlike [Basis], which stores rotation, scale, and shearing, quaternions only store rotation.
 | |
| 		Quaternions can be parametrized using both an axis-angle pair or Euler angles. Due to their compactness and the way they are stored in memory, certain operations (obtaining axis-angle and performing SLERP, in particular) are more efficient and robust against floating-point errors.
 | |
| 		[b]Note:[/b] Quaternions need to be normalized before being used for rotation.
 | |
| 	</description>
 | |
| 	<tutorials>
 | |
| 		<link title="Using 3D transforms">$DOCS_URL/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" />
 | |
| 			<param 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" />
 | |
| 			<param index="0" name="arc_from" type="Vector3" />
 | |
| 			<param index="1" name="arc_to" type="Vector3" />
 | |
| 			<description>
 | |
| 				Constructs a quaternion representing the shortest arc between two points on the surface of a sphere with a radius of [code]1.0[/code].
 | |
| 			</description>
 | |
| 		</constructor>
 | |
| 		<constructor name="Quaternion">
 | |
| 			<return type="Quaternion" />
 | |
| 			<param index="0" name="axis" type="Vector3" />
 | |
| 			<param 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" />
 | |
| 			<param index="0" name="from" type="Basis" />
 | |
| 			<description>
 | |
| 				Constructs a quaternion from the given [Basis].
 | |
| 			</description>
 | |
| 		</constructor>
 | |
| 		<constructor name="Quaternion">
 | |
| 			<return type="Quaternion" />
 | |
| 			<param index="0" name="x" type="float" />
 | |
| 			<param index="1" name="y" type="float" />
 | |
| 			<param index="2" name="z" type="float" />
 | |
| 			<param 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" />
 | |
| 			<param index="0" name="to" type="Quaternion" />
 | |
| 			<description>
 | |
| 				Returns the angle between this quaternion and [param to]. This is the magnitude of the angle you would need to rotate by to get from one to the other.
 | |
| 				[b]Note:[/b] The magnitude of the floating-point error for this method is abnormally high, so methods such as [code]is_zero_approx[/code] will not work reliably.
 | |
| 			</description>
 | |
| 		</method>
 | |
| 		<method name="dot" qualifiers="const">
 | |
| 			<return type="float" />
 | |
| 			<param index="0" name="with" type="Quaternion" />
 | |
| 			<description>
 | |
| 				Returns the dot product of two quaternions.
 | |
| 			</description>
 | |
| 		</method>
 | |
| 		<method name="exp" qualifiers="const">
 | |
| 			<return type="Quaternion" />
 | |
| 			<description>
 | |
| 			</description>
 | |
| 		</method>
 | |
| 		<method name="from_euler" qualifiers="static">
 | |
| 			<return type="Quaternion" />
 | |
| 			<param index="0" name="euler" type="Vector3" />
 | |
| 			<description>
 | |
| 				Constructs a Quaternion from Euler angles in YXZ rotation order.
 | |
| 			</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" />
 | |
| 			<param index="0" name="order" type="int" default="2" />
 | |
| 			<description>
 | |
| 				Returns the quaternion's rotation in the form of Euler angles. The Euler order depends on the [param order] parameter, for example using the YXZ convention: since this method decomposes, first Z, then X, and Y last. See the [enum EulerOrder] enum for possible values. The 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" />
 | |
| 			<param index="0" name="to" type="Quaternion" />
 | |
| 			<description>
 | |
| 				Returns [code]true[/code] if this quaternion and [param to] are approximately equal, by running [method @GlobalScope.is_equal_approx] on each component.
 | |
| 			</description>
 | |
| 		</method>
 | |
| 		<method name="is_finite" qualifiers="const">
 | |
| 			<return type="bool" />
 | |
| 			<description>
 | |
| 				Returns [code]true[/code] if this quaternion is finite, by calling [method @GlobalScope.is_finite] 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="log" qualifiers="const">
 | |
| 			<return type="Quaternion" />
 | |
| 			<description>
 | |
| 			</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" />
 | |
| 			<param index="0" name="to" type="Quaternion" />
 | |
| 			<param index="1" name="weight" type="float" />
 | |
| 			<description>
 | |
| 				Returns the result of the spherical linear interpolation between this quaternion and [param to] by amount [param weight].
 | |
| 				[b]Note:[/b] Both quaternions must be normalized.
 | |
| 			</description>
 | |
| 		</method>
 | |
| 		<method name="slerpni" qualifiers="const">
 | |
| 			<return type="Quaternion" />
 | |
| 			<param index="0" name="to" type="Quaternion" />
 | |
| 			<param index="1" name="weight" type="float" />
 | |
| 			<description>
 | |
| 				Returns the result of the spherical linear interpolation between this quaternion and [param to] by amount [param weight], but without checking if the rotation path is not bigger than 90 degrees.
 | |
| 			</description>
 | |
| 		</method>
 | |
| 		<method name="spherical_cubic_interpolate" qualifiers="const">
 | |
| 			<return type="Quaternion" />
 | |
| 			<param index="0" name="b" type="Quaternion" />
 | |
| 			<param index="1" name="pre_a" type="Quaternion" />
 | |
| 			<param index="2" name="post_b" type="Quaternion" />
 | |
| 			<param index="3" name="weight" type="float" />
 | |
| 			<description>
 | |
| 				Performs a spherical cubic interpolation between quaternions [param pre_a], this vector, [param b], and [param post_b], by the given amount [param weight].
 | |
| 			</description>
 | |
| 		</method>
 | |
| 		<method name="spherical_cubic_interpolate_in_time" qualifiers="const">
 | |
| 			<return type="Quaternion" />
 | |
| 			<param index="0" name="b" type="Quaternion" />
 | |
| 			<param index="1" name="pre_a" type="Quaternion" />
 | |
| 			<param index="2" name="post_b" type="Quaternion" />
 | |
| 			<param index="3" name="weight" type="float" />
 | |
| 			<param index="4" name="b_t" type="float" />
 | |
| 			<param index="5" name="pre_a_t" type="float" />
 | |
| 			<param index="6" name="post_b_t" type="float" />
 | |
| 			<description>
 | |
| 				Performs a spherical cubic interpolation between quaternions [param pre_a], this vector, [param b], and [param post_b], by the given amount [param weight].
 | |
| 				It can perform smoother interpolation than [code]spherical_cubic_interpolate()[/code] by the time values.
 | |
| 			</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" />
 | |
| 			<param index="0" name="right" type="Quaternion" />
 | |
| 			<description>
 | |
| 				Returns [code]true[/code] if the quaternions are not equal.
 | |
| 				[b]Note:[/b] Due to floating-point precision errors, consider using [method is_equal_approx] instead, which is more reliable.
 | |
| 			</description>
 | |
| 		</operator>
 | |
| 		<operator name="operator *">
 | |
| 			<return type="Quaternion" />
 | |
| 			<param index="0" name="right" type="Quaternion" />
 | |
| 			<description>
 | |
| 				Composes these two quaternions by multiplying them together. This has the effect of rotating the second quaternion (the child) by the first quaternion (the parent).
 | |
| 			</description>
 | |
| 		</operator>
 | |
| 		<operator name="operator *">
 | |
| 			<return type="Vector3" />
 | |
| 			<param index="0" name="right" type="Vector3" />
 | |
| 			<description>
 | |
| 				Rotates (multiplies) the [Vector3] by the given [Quaternion].
 | |
| 			</description>
 | |
| 		</operator>
 | |
| 		<operator name="operator *">
 | |
| 			<return type="Quaternion" />
 | |
| 			<param index="0" name="right" type="float" />
 | |
| 			<description>
 | |
| 				Multiplies each component of the [Quaternion] by the given value. This operation is not meaningful on its own, but it can be used as a part of a larger expression.
 | |
| 			</description>
 | |
| 		</operator>
 | |
| 		<operator name="operator *">
 | |
| 			<return type="Quaternion" />
 | |
| 			<param index="0" name="right" type="int" />
 | |
| 			<description>
 | |
| 				Multiplies each component of the [Quaternion] by the given value. This operation is not meaningful on its own, but it can be used as a part of a larger expression.
 | |
| 			</description>
 | |
| 		</operator>
 | |
| 		<operator name="operator +">
 | |
| 			<return type="Quaternion" />
 | |
| 			<param index="0" name="right" type="Quaternion" />
 | |
| 			<description>
 | |
| 				Adds each component of the left [Quaternion] to the right [Quaternion]. This operation is not meaningful on its own, but it can be used as a part of a larger expression, such as approximating an intermediate rotation between two nearby rotations.
 | |
| 			</description>
 | |
| 		</operator>
 | |
| 		<operator name="operator -">
 | |
| 			<return type="Quaternion" />
 | |
| 			<param index="0" name="right" type="Quaternion" />
 | |
| 			<description>
 | |
| 				Subtracts each component of the left [Quaternion] by the right [Quaternion]. This operation is not meaningful on its own, but it can be used as a part of a larger expression.
 | |
| 			</description>
 | |
| 		</operator>
 | |
| 		<operator name="operator /">
 | |
| 			<return type="Quaternion" />
 | |
| 			<param index="0" name="right" type="float" />
 | |
| 			<description>
 | |
| 				Divides each component of the [Quaternion] by the given value. This operation is not meaningful on its own, but it can be used as a part of a larger expression.
 | |
| 			</description>
 | |
| 		</operator>
 | |
| 		<operator name="operator /">
 | |
| 			<return type="Quaternion" />
 | |
| 			<param index="0" name="right" type="int" />
 | |
| 			<description>
 | |
| 				Divides each component of the [Quaternion] by the given value. This operation is not meaningful on its own, but it can be used as a part of a larger expression.
 | |
| 			</description>
 | |
| 		</operator>
 | |
| 		<operator name="operator ==">
 | |
| 			<return type="bool" />
 | |
| 			<param index="0" name="right" type="Quaternion" />
 | |
| 			<description>
 | |
| 				Returns [code]true[/code] if the quaternions are exactly equal.
 | |
| 				[b]Note:[/b] Due to floating-point precision errors, consider using [method is_equal_approx] instead, which is more reliable.
 | |
| 			</description>
 | |
| 		</operator>
 | |
| 		<operator name="operator []">
 | |
| 			<return type="float" />
 | |
| 			<param index="0" name="index" type="int" />
 | |
| 			<description>
 | |
| 				Access quaternion components using their index. [code]q[0][/code] is equivalent to [code]q.x[/code], [code]q[1][/code] is equivalent to [code]q.y[/code], [code]q[2][/code] is equivalent to [code]q.z[/code], and [code]q[3][/code] is equivalent to [code]q.w[/code].
 | |
| 			</description>
 | |
| 		</operator>
 | |
| 		<operator name="operator unary+">
 | |
| 			<return type="Quaternion" />
 | |
| 			<description>
 | |
| 				Returns the same value as if the [code]+[/code] was not there. Unary [code]+[/code] does nothing, but sometimes it can make your code more readable.
 | |
| 			</description>
 | |
| 		</operator>
 | |
| 		<operator name="operator unary-">
 | |
| 			<return type="Quaternion" />
 | |
| 			<description>
 | |
| 				Returns the negative value of the [Quaternion]. This is the same as writing [code]Quaternion(-q.x, -q.y, -q.z, -q.w)[/code]. This operation results in a quaternion that represents the same rotation.
 | |
| 			</description>
 | |
| 		</operator>
 | |
| 	</operators>
 | |
| </class>
 | 
