SQuaternion
Index
Functions Index
| Function |
|---|
| 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) |
| static SQuaternion AngleAxis (SVector axis, float angle) |
static SQuaternion LookRotation (SVector forward) |
static SVector operator (SQuaternion a, SVector b) |
| static SQuaternion FromToRotation (SVector a, SVector b) |
Properties Index
| Property |
|---|
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 |
Functions
ToString
string ToString ()
Converts a quaternion to a human readable string
- Lua
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
| Parameter | Type | Description |
|---|---|---|
- Lua
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
| Parameter | Type | Description |
|---|---|---|
- Lua
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
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
| Parameter | Type | Description |
|---|---|---|
- Lua
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
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
| Parameter | Type | Description |
|---|---|---|
- Lua
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
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
| Parameter | Type | Description |
|---|---|---|
- Lua
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 |
|---|---|---|
| other | SQuaternion | The other Quaternion that we are comparing with. |
- Lua
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
| Parameter | Type | Description |
|---|---|---|
- Lua
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.
| Parameter | Type | Description |
|---|---|---|
- Lua
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
| Parameter | Type | Description |
|---|---|---|
- Lua
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)
| Parameter | Type | Description |
|---|---|---|
- Lua
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.
| Parameter | Type | Description |
|---|---|---|
- Lua
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.
| Parameter | Type | Description |
|---|---|---|
- Lua
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
newQuat = Quaternion.New(0.0, 1.0, 0.0, 0.0)
newQuat.X = 40.0
- Lua
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
newQuat = Quaternion.New(0.0, 1.0, 0.0, 0.0)
newQuat.Y = 40.0
- Lua
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
newQuat = Quaternion.New(0.0, 1.0, 0.0, 0.0)
newQuat.Z = 40.0
- Lua
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
newQuat = Quaternion.New(0.0, 1.0, 0.0, 0.0)
newQuat.W = 40.0
- Lua
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
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
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
identity = Quaternion.Identity