Index
Functions Index
Function float Angle (SQuaternion b)
SQuaternion Lerp (SQuaternion b, float t)
SQuaternion Slerp (SQuaternion b, float t)
float Dot (SQuaternion b)
bool Equals (SQuaternion other)
static SQuaternion New (float x, float y, float z, float w)
static SQuaternion Euler (float x, float y, float z)
static SQuaternion AngleAxis (SVector axis, float angle)
static SVector operator (SQuaternion a, SVector b)
static SQuaternion operator (SQuaternion a, SQuaternion b)
static SQuaternion FromToRotation (SVector a, SVector b)
Properties Index
Functions
ToString
string ToString ()
Converts a quaternion to a human readable string
Lua
Copy aQuaternion = Quaternion. New ( 0.0 , 1.0 , 0.0 , 0.0 )
theString = aQuaternion. ToString ()
Angle
float Angle (SQuaternion b)
Returns the angle between two quaternions
Lua
Copy 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.0173034667969
Lerp
SQuaternion Lerp (SQuaternion b, float t)
Linearly interpolates between this and other quaternion, by factor t and returns the result
Lua
Copy QuatA = 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 )
Lua
Copy 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)
Slerp
SQuaternion Slerp (SQuaternion b, float t)
Spherically interpolates between this and other quaternion, by factor t and returns the result
Lua
Copy 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 )
Lua
Copy 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)
RotateTowards
SQuaternion RotateTowards (SQuaternion b, float delta)
Rotates this towards other, by no more than t degrees
Lua
Copy 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 )
Lua
Copy 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)
Dot
float Dot (SQuaternion b)
Returns the dot product of this and another quaternion
Lua
Copy 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.707000017166138
Equals
bool Equals (SQuaternion other)
Function Description
Parameter Type Description The other Quaternion that we are comparing with.
Lua
Copy QuatA = 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)
New
static SQuaternion New (float x, float y, float z, float w)
Creates a new Quaternion
Lua
Copy newQuat = Quaternion. New ( 0.0 , 0.707 , 0.0 , 0.707 )
Euler
static SQuaternion Euler (float x, float y, float z)
Creates a quaternion using Euler angles.
Lua
Copy newQuat = Quaternion. Euler ( 0.0 , 90.0 , 0.0 )
AngleAxis
static SQuaternion AngleAxis (SVector axis, float angle)
Creates a quaternion from an Angle/Axis pair
Lua
Copy newVector = Vector. New ( 0.0 , 90.0 , 0.0 )
newQuat = Quaternion. AngleAxis (newVector, 90.0 )
LookRotation
static SQuaternion LookRotation (SVector forward)
static SQuaternion LookRotation (SVector forward, SVector up)
Creates a quaternion a forward vector; presuming up is (0,1,0)
Lua
Copy local newQuat = Quaternion. LookRotation (Vector.Forward);
-- or
local newQuat = Quaternion. LookRotation (Vector.Forward, Vector.Up);
operator*
static SVector operator * (SQuaternion a, SVector b)
static SQuaternion operator * (SQuaternion a, SQuaternion b)
The result of using the * operator.
Lua
Copy 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 * newQuat
FromToRotation
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.
Lua
Copy VectorA = Vector. New ( 0.0 , 1.0 , 0.0 )
VectorB = Vector. New ( 1.0 , 0.0 , 0.0 )
QuaternionFromToRotation = Quaternion. FromToRotation (VectorA, VectorB)
Properties
X
float X get
set
X axis
Lua
Copy newQuat = Quaternion. New ( 0.0 , 1.0 , 0.0 , 0.0 )
newQuat.X = 40.0
Lua
Copy obj = 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)
Y
float Y get
set
Y axis
Lua
Copy newQuat = Quaternion. New ( 0.0 , 1.0 , 0.0 , 0.0 )
newQuat.Y = 40.0
Lua
Copy 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);
Z
float Z get
set
Z axis
Lua
Copy newQuat = Quaternion. New ( 0.0 , 1.0 , 0.0 , 0.0 )
newQuat.Z = 40.0
Lua
Copy local 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);
W
float W get
set
W axis
Lua
Copy newQuat = Quaternion. New ( 0.0 , 1.0 , 0.0 , 0.0 )
newQuat.W = 40.0
Lua
Copy local 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);
EulerAngles
SVector EulerAngles get
Returns the Euler rotation for this Quaternion
Lua
Copy newQuat = Quaternion. New ( 0.0 , 0.707 , 0.0 , 0.707 )
euler = newQuat.EulerAngles
Inverse
SQuaternion Inverse get
Returns the inverse of this quaternion
Lua
Copy quat = Quaternion. New ( 0.0 , 0.707 , 0.0 , 0.707 )
inverseQuat = quat.Inverse
Identity
static SQuaternion Identity get
Equivalent of new SQuaternion(0,0,0,1)
Lua
Copy identity = Quaternion.Identity