string ToString ()
Converts a quaternion to a human readable string
float Angle (SQuaternion b)
Returns the angle between two quaternions
SQuaternion Lerp (SQuaternion b, float t)
Linearly interpolates between this and other quaternion, by factor t and returns the result
SQuaternion Slerp (SQuaternion b, float t)
Spherically interpolates between this and other quaternion, by factor t and returns the result
SQuaternion RotateTowards (SQuaternion b, float delta)
Rotates this towards other, by no more than t degrees
float Dot (SQuaternion b)
Returns the dot product of this and another quaternion
bool Equals (SQuaternion other)
Function Description
static SQuaternion New (float x, float y, float z, float w)
Creates a new Quaternion
static SQuaternion Euler (float x, float y, float z)
Creates a quaternion using Euler angles.
static SQuaternion AngleAxis ( axis, float angle)
Creates a quaternion from an Angle/Axis pair
static SQuaternion LookRotation ( forward) static SQuaternion LookRotation ( forward, up)
Creates a quaternion a forward vector; presuming up is (0,1,0)
static operator* (SQuaternion a, b) static SQuaternion operator* (SQuaternion a, SQuaternion b)
The result of using the * operator.
static SQuaternion FromToRotation (SVector a, SVector b)
Creates a rotation which rotates from a to b.
Usually you use this to rotate a transform so that one of its axes eg. the y-axis - follows a target direction b in world space.
float X get set
X axis
float Y get set
Y axis
float Z get set
Z axis
float W get set
W axis
EulerAngles get
Returns the Euler rotation for this Quaternion
SQuaternion Inverse get
Returns the inverse of this quaternion
static SQuaternion Identity get
Equivalent of new SQuaternion(0,0,0,1)
static SQuaternion (SVector forward) static SQuaternion (SVector forward, SVector up)
static SVector (SQuaternion a, SVector b) static SQuaternion (SQuaternion a, SQuaternion b)
static SQuaternion FromToRotation (SVector a, SVector b)
string ToString ()
float Angle (SQuaternion b)
SQuaternion Lerp (SQuaternion b, float t)
SQuaternion Slerp (SQuaternion b, float t)
SQuaternion RotateTowards (SQuaternion b, float delta)
float Dot (SQuaternion b)
bool Equals (SQuaternion other)
Static Functions
static SQuaternion New (float x, float y, float z, float w)
static SQuaternion Euler (float x, float y, float z)
float X get set
float Y get set
float Z get set
float W get set
SVector EulerAngles get
SQuaternion Inverse get
Static Properties
static SQuaternion Identity get
other
SQuaternion
The other Quaternion that we are comparing with.
static SQuaternion (SVector axis, float angle)
aQuaternion = Quaternion.New(0.0, 1.0, 0.0, 0.0)
theString = aQuaternion.ToString()local newQuat = Quaternion.New(0.0, 0.707, 0.0, 0.707);
local otherQuat = Quaternion.New(0.0, 1.0, 0.0, 0.0);
angle = newQuat.Angle(otherQuat);
Space.Log(angle);
-- prints 90.0173034667969QuatA = Quaternion.New(0.0, 0.707, 0.0, 0.707)
QuatB = Quaternion.New(0.0, 1.0, 0.0, 0.0)
QuatLerpAB = QuatA.Lerp(QuatB, Space.Time * 0.1)local cube = Space.Host.ExecutingObject
local fromQuat = cube.LocalRotation
local toQuat = Quaternion.New(0.0, 0.707, 0.0, 0.707)
local speed = 0.1
-- The cube will rotate 90 degrees from current rotation by speed amount.
local moveCube = function()
cube.LocalRotation = fromQuat.Lerp(toQuat, Space.Time * speed);
end
cube.OnUpdate(moveCube)QuatA = Quaternion.New(0.0, 0.707, 0.0, 0.707)
QuatB = Quaternion.New(0.0, 1.0, 0.0, 0.0)
QuatLerpAB = QuatA.Slerp(QuatB, Space.Time * 0.1)local cube = Space.Host.ExecutingObject;
local fromQuat = cube.LocalRotation;
local toQuat = Quaternion.New(0.0, 1.0, 0.0, 0.0);
local speed = 0.1;
-- The cube will rotate 180 degrees from current rotation by speed amount.
local moveCube = function()
cube.LocalRotation = fromQuat.Slerp(toQuat, Space.Time * speed)
end
cube.OnUpdate(moveCube)QuatA = Quaternion.New(0.0, 0.707, 0.0, 0.707)
QuatB = Quaternion.New(0.0, 1.0, 0.0, 0.0)
ARotatedTowardB = QuatA.RotateTowards(QuatB, Space.Time * 0.1)local cube = Space.Host.ExecutingObject
local fromQuat = cube.LocalRotation
local target = Quaternion.New(0.0, 0.707, 0.0, 0.707)
local speed = 10.0
-- The cube will rotate 90 degrees from current rotation by step amount.
local moveCube = function()
local step = speed * Space.Time
cube.LocalRotation = fromQuat.RotateTowards(target, step)
end
cube.OnUpdate(moveCube)local quat = Quaternion.New(0.0, 0.707, 0.0, 0.707);
local quatOther = Quaternion.New(0.0, 0.0, 0.0, 1.0);
Space.Log(quat.Dot(quatOther));
-- prints 0.707000017166138QuatA = Quaternion.New(0.0, 0.707, 0.0, 0.707)
QuatB = Quaternion.New(0.0, 1.0, 0.0, 0.0)
isEqual = QuatA.Equals(QuatB)newQuat = Quaternion.New(0.0, 0.707, 0.0, 0.707)newQuat = Quaternion.Euler(0.0, 90.0, 0.0)newVector = Vector.New(0.0, 90.0, 0.0)
newQuat = Quaternion.AngleAxis(newVector, 90.0)local newQuat = Quaternion.LookRotation(Vector.Forward);
-- or
local newQuat = Quaternion.LookRotation(Vector.Forward, Vector.Up);newQuat = Quaternion.New(0.0, 1.0, 0.0, 0.0)
newVector = Vector.Forward
rotatedVector = newQuat * newVector
--or
newQuat = Quaternion.New(0.0, 0.707, 0.0, 0.707)
newVector = Vector.New(0.0, 0.0, 0.0)
rotatedVector = newQuat * newQuatVectorA = Vector.New(0.0,1.0,0.0)
VectorB = Vector.New(1.0,0.0,0.0)
QuaternionFromToRotation = Quaternion.FromToRotation(VectorA, VectorB)newQuat = Quaternion.New(0.0, 1.0, 0.0, 0.0)
newQuat.X = 40.0obj = Space.Host.ExecutingObject
originalRot = obj.LocalRotation
onStartMethod = function()
Space.Log(originalRot.x)
-- prints the X component of this object as a float
originalRot.x = 0.25
-- assigns 0.25 value to the X component
obj.LocalRotation = originalRot
-- sets the the new rotation
end
obj.OnStart(onStartMethod)newQuat = Quaternion.New(0.0, 1.0, 0.0, 0.0)
newQuat.Y = 40.0 obj = Space.Host.ExecutingObject
originalRot = obj.LocalRotation
onStartMethod = function()
Space.Log(originalRot.y);
-- prints the Y component of this object as a float
originalRot.y = 0.25;
-- assigns 0.25 value to the Y component
obj.LocalRotation = originalRot;
-- sets the the new rotation
end
obj.OnStart(onStartMethod);newQuat = Quaternion.New(0.0, 1.0, 0.0, 0.0)
newQuat.Z = 40.0local obj = Space.Host.ExecutingObject;
local originalRot = obj.LocalRotation;
obj.SubscribeToEvents();
local onStartMethod = function()
Space.Log(originalRot.z);
-- prints the Z component of this object as a float
originalRot.z = 0.25;
-- assigns 0.25 value to the Z component
obj.LocalRotation = originalRot;
-- sets the the new rotation
end
obj.OnStart(onStartMethod);newQuat = Quaternion.New(0.0, 1.0, 0.0, 0.0)
newQuat.W = 40.0local obj = Space.Host.ExecutingObject;
local originalRot = obj.LocalRotation;
obj.SubscribeToEvents();
local onStartMethod = function()
Space.Log(originalRot.w);
-- prints the W component of this object as a float
originalRot.w = 0.25;
-- assigns 0.25 value to the W component
obj.LocalRotation = originalRot;
-- sets the the new rotation
end
obj.OnStart(onStartMethod);newQuat = Quaternion.New(0.0, 0.707, 0.0, 0.707)
euler = newQuat.EulerAnglesquat = Quaternion.New(0.0, 0.707, 0.0, 0.707)
inverseQuat = quat.Inverseidentity = Quaternion.Identity