/Godot 3.1

# Quat

Category: Built-In Types

Quaternion.

## Properties

 float w float x float y float z

## Methods

 Quat Quat ( Basis from ) Quat Quat ( Vector3 euler ) Quat Quat ( Vector3 axis, float angle ) Quat Quat ( float x, float y, float z, float w ) Quat cubic_slerp ( Quat b, Quat pre_a, Quat post_b, float t ) float dot ( Quat b ) Vector3 get_euler ( ) Quat inverse ( ) bool is_normalized ( ) float length ( ) float length_squared ( ) Quat normalized ( ) void set_axis_angle ( Vector3 axis, float angle ) void set_euler ( Vector3 euler ) Quat slerp ( Quat b, float t ) Quat slerpni ( Quat b, float t ) Vector3 xform ( Vector3 v )

## Description

A unit quaternion used for representing 3D rotations.

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.

Quaternions need to be (re)normalized.

## Property Descriptions

### float w

W component of the quaternion. Default value: `1`

### float x

X component of the quaternion. Default value: `0`

### float y

Y component of the quaternion. Default value: `0`

### float z

Z component of the quaternion. Default value: `0`

## Method Descriptions

### Quat Quat ( Basis from )

Returns the rotation matrix corresponding to the given quaternion.

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).

Returns a quaternion that will rotate around the given axis by the specified angle. The axis must be a normalized vector.

Returns a quaternion defined by these values.

### Quat cubic_slerp ( Quat b, Quat pre_a, Quat post_b, float t )

Performs a cubic spherical-linear interpolation with another quaternion.

### float dot ( Quat b )

Returns the dot product of two quaternions.

### Vector3 get_euler ( )

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).

### Quat inverse ( )

Returns the inverse of the quaternion.

### bool is_normalized ( )

Returns whether the quaternion is normalized or not.

### float length ( )

Returns the length of the quaternion.

### float length_squared ( )

Returns the length of the quaternion, squared.

### Quat normalized ( )

Returns a copy of the quaternion, normalized to unit length.

### void set_axis_angle ( Vector3 axis, float angle )

Set the quaternion to a rotation which rotates around axis by the specified angle, in radians. The axis must be a normalized vector.

### void set_euler ( Vector3 euler )

Set 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).

### Quat slerp ( Quat b, float t )

Performs a spherical-linear interpolation with another quaternion.

### Quat slerpni ( Quat b, float t )

Performs a spherical-linear interpolation with another quaterion without checking if the rotation path is not bigger than 90°.

### Vector3 xform ( Vector3 v )

Transforms the vector `v` by this quaternion.

© 2014–2019 Juan Linietsky, Ariel Manzur, Godot Engine contributors