All pages
Powered by GitBook
1 of 1

Loading...

SQuaternion

Index

Functions Index

Function

Properties Index

Property

Functions

ToString

string ToString ()

Converts a quaternion to a human readable string

Angle

float Angle (SQuaternion b)

Returns the angle between two quaternions

Parameter
Type
Description

Lerp

SQuaternion Lerp (SQuaternion b, float t)

Linearly interpolates between this and other quaternion, by factor t and returns the result

Parameter
Type
Description

Slerp

SQuaternion Slerp (SQuaternion b, float t)

Spherically interpolates between this and other quaternion, by factor t and returns the result

Parameter
Type
Description

RotateTowards

SQuaternion RotateTowards (SQuaternion b, float delta)

Rotates this towards other, by no more than t degrees

Parameter
Type
Description

Dot

float Dot (SQuaternion b)

Returns the dot product of this and another quaternion

Parameter
Type
Description

Equals

bool Equals (SQuaternion other)

Function Description

Parameter
Type
Description

New

static SQuaternion New (float x, float y, float z, float w)

Creates a new Quaternion

Parameter
Type
Description

Euler

static SQuaternion Euler (float x, float y, float z)

Creates a quaternion using Euler angles.

Parameter
Type
Description

AngleAxis

static SQuaternion AngleAxis ( axis, float angle)

Creates a quaternion from an Angle/Axis pair

Parameter
Type
Description

LookRotation

static SQuaternion LookRotation ( forward) static SQuaternion LookRotation ( forward, up)

Creates a quaternion a forward vector; presuming up is (0,1,0)

Parameter
Type
Description

operator*

static operator* (SQuaternion a, b) static SQuaternion operator* (SQuaternion a, SQuaternion b)

The result of using the * operator.

Parameter
Type
Description

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

Properties

X

float X get set

X axis

Y

float Y get set

Y axis

Z

float Z get set

Z axis

W

float W get set

W axis

EulerAngles

EulerAngles get

Returns the Euler rotation for this Quaternion

Inverse

SQuaternion Inverse get

Returns the inverse of this quaternion

Identity

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.

SVector
SVector
SVector
SVector
SVector
SVector
SVector

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.0173034667969
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)
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.707000017166138
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)
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 * newQuat
VectorA = 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.0
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)
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.0
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);
newQuat = Quaternion.New(0.0, 1.0, 0.0, 0.0)
newQuat.W = 40.0
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);
newQuat = Quaternion.New(0.0, 0.707, 0.0, 0.707)
euler = newQuat.EulerAngles
quat = Quaternion.New(0.0, 0.707, 0.0, 0.707)
inverseQuat = quat.Inverse
identity = Quaternion.Identity
AngleAxis
LookRotation
LookRotation
operator
operator