Skip to content

Quaternion(JavaScript)

Quaternion

Scripting Name:Insight.Quaternion

四元数。

javascript
constructor( x?: number, y?: number, z?: number, w?: number);

Parameters

  • x : number (可选)x 分量,默认为 0
  • y : number (可选)y 分量,默认为 0
  • z : number (可选)z 分量,默认为 0
  • w : number (可选)w 分量,默认为 1

Properties


eulerAngles

type :Insight.Vector3

(只读)以欧拉角表示旋转。

w

type :number

w 值。

x

type :number

x 值。

y

type :number

y 值。

z

type :number

z 值。

Methods


toString

javascript
tostring(): string

将 quat 内容以一定格式转为 string 类型。

set

javascript
set(px : number, py : number, pz : number, pw : number): this

设置四元数四个分量的值。

Parameters

  • px : number 分量 x
  • py : number 分量 y
  • pz : number 分量 z
  • pw : number 分量 w

setX

javascript
setX(px : number): this

设置四元数 x 分量的值。

Parameters

  • px : number 分量 x

setY

javascript
setY(py : number): this

设置四元数 y 分量的值。

Parameters

  • py : number 分量 y

setZ

javascript
setZ(pz : number): this

设置四元数 z 分量的值。

Parameters

  • pz : number 分量 z

setW

javascript
setW(pw : number): this

设置四元数 w 分量的值。

Parameters

  • pw : number 分量 w

setComponent

javascript
setComponent(index : number, value : number) : this

设置四元数 index 分量的值。

Parameters

  • index : number 分量顺序,如 x 为 0,w 为 3
  • value : number 设置的值

getComponent

javascript
getComponent(index : number) : number

设置四元数某一个分量的值

Parameters

  • index : number 分量顺序,如 x 为 0,w 为 3

clone

javascript
clone() : Insight.Quaternion

创建一个新的 Quaternion 等于本 Quaternion。

copy

javascript
copy(q : Insight.Quaternion) : this

将一个 Quaternion 的值复制到本 Quaternion。

Parameters

equals

javascript
equals(b : Insight.Quaternion) : boolean

判断两个四元数是否相等。

Parameters

setFromAxisAngle

javascript
setFromAxisAngle(axis : Insight.Vector3, angle : number) : this

用旋转角和旋转轴设置四元数。

Parameters

setFromRotationMatrix

javascript
setFromRotationMatrix(m : Insight.Matrix4x4) : this

用旋转矩阵设置四元数。

Parameters

setFromToRotation

javascript
SetFromToRotation(vFrom : Insight.Vector3, vTo : Insight.Vector3) : this

将四元数设置为两个向量之间的旋转。

Parameters

angleTo

javascript
angleTo(q : Insight.Quaternion) : number

返回两个四元数之间的弧度值。

Parameters

rotateTowards

javascript
rotateTowards(q : Insight.Quaternion, step : number) : Insight.Quaternion

朝另一个四元数以一定弧度值做旋转。

Parameters

inverse

javascript
inverse() : this

将此四元数转逆。

conjugate

javascript
conjugate() : this

将此四元数转为它的共轭。

dot

javascript
dot(q : Insight.Quaternion) : number

计算四元数的点乘。

Parameters

lengthSq

javascript
lengthSq() : number

计算四元数欧式长度的平方。类似于 Vector4 的长度计算,适用于比较两个四元数的长度,计算效率比 length() 高一点。

length

javascript
length() : number

计算四元数欧式长度。类似于 Vector4 的长度计算。

normalize

javascript
normalize() : this

归一化四元数。

multiply

javascript
multiply(q : Insight.Quaternion) : this

计算四元数的叉乘。

Parameters

premultiply

javascript
premultiply(q : Insight.Quaternion) : this

计算四元数的叉乘,与 multiply() 方法相乘顺序相反。

Parameters

multiplyQuaternions

javascript
multiplyQuaternions(a : Insight.Quaternion, b : Insight.Quaternion) : this

计算两个四元数 a 和 b 的叉乘并赋值给本四元数。

Parameters

slerp

javascript
slerp(q : Insight.Quaternion, t : number) : this

两个旋转做球面插值,t 在[0, 1]之间。当 t=0 时,返回当前四元数的值,当 t=1 时,返回 q 的值。

Parameters

pow

javascript
pow(exponent : number) : this

计算本四元数的幂

Parameters

  • exponent : number 幂

fromArray

javascript
fromArray(array : number[], offset? : number) : this

从数组创建四元数

Parameters

  • array : number[] 数组
  • offset? : number 取值的偏移量

toArray

javascript
toArray(array? : number[], offset? : number) : number[]

返回此四元数的数组形式

Parameters

  • array? : number[] 接收结果的数组,如果不传将会创建一个新的数组
  • offset? : number 接收数组的偏移量

setLookRotation

javascript
setLookRotation(view : Insight.Vector3, up? : Insight.Vector3) : this

根据前向量和上向量计算旋转。

Parameters

toAngleAxis

javascript
toAngleAxis() : {angle: number, axis: Insight.Vector3}

返回此四元数的旋转轴和旋转角。

identity

javascript
identity() : this

重置四元数。

Static Methods


Angle

javascript
Angle(a : Insight.Quaternion, b : Insight.Quaternion) : number

计算两个旋转之间的夹角。

Parameters

AngleAxis

javascript
AngleAxis(angle : number, ax : number, ay : number, az : number) : Insight.Quaternion

用旋转角和旋转轴创建一个旋转。

Parameters

  • angle : number 旋转角度
  • ax : number 旋转轴 x 分量
  • ay : number 旋转轴 y 分量
  • az : number 旋转轴 z 分量

AngleAxis

javascript
AngleAxis(angle : number, axis : Insight.Vector3) : Insight.Quaternion

用旋转角和旋转轴创建一个旋转。

Parameters

Dot

javascript
Dot(a : Insight.Quaternion, b : Insight.Quaternion) : number

计算两个四元数的点积。

Parameters

Euler

javascript
Euler(x : number, y : number, z : number) : Insight.Quaternion

用欧拉角创建一个旋转。

Parameters

  • x : number 欧拉角 x 分量
  • y : number 欧拉角 y 分量
  • z : number 欧拉角 z 分量

Euler

javascript
Euler(e : Insight.Vector3) : Insight.Quaternion

用欧拉角创建一个旋转。

Parameters

FromToRotation

javascript
FromToRotation(fromDirection : Insight.Vector3, toDirction : Insight.Vector3) : Insight.Quaternion

计算两个向量之间的旋转。

Parameters

Lerp

javascript
Lerp(a : Insight.Quaternion, b : Insight.Quaternion, t : number) : Insight.Quaternion

两个旋转做插值,t 在[0, 1]之间。当 t=0 时,返回 a,当 t=1 时,返回 b。

Parameters

LerpUnclamped

javascript
LerpUnclamped(a : Insight.Quaternion, b : Insight.Quaternion, t : number) : Insight.Quaternion

两个旋转做插值,t 的取值范围不做限制。

Parameters

LookRotation

javascript
LookRotation(view : Insight.Vector3, up? : Insight.Vector3) : Insight.Quaternion

根据前向量和上向量计算旋转。

Parameters

RotateTowards

javascript
RotateTowards(from : Insight.Quaternion, to : Insight.Quaternion, maxDegreesDelta : number) : Insight.Quaternion

计算两个旋转之间的相对旋转。

Parameters

  • from : Insight.Quaternion 旋转起始
  • to : Insight.Quaternion 旋转结束
  • maxDegreesDelta : number 最大可旋转角度 若这两个旋转之间的相对旋转角度超过了最大可旋转角度,即返回一个到最大角度的两个旋转之间的球面插值。

Slerp

javascript
Slerp(a : Insight.Quaternion, b : Insight.Quaternion, t : number) : Insight.Quaternion

两个旋转做球面插值,t 在[0, 1]之间。当 t=0 时,返回 a,当 t=1 时,返回 b。

Parameters

Slerp

javascript
Slerp(a : Insight.Quaternion, b : Insight.Quaternion, m : Insight.Quaternion, t : number) : Insight.Quaternion

两个旋转做球面插值,t 在[0, 1]之间。当 t=0 时,返回 a,当 t=1 时,返回 b,将结果存入 m 中。

Parameters

SlerpUnclamped

javascript
SlerpUnclamped(a : Insight.Quaternion, b : Insight.Quaternion, t : number) : Insight.Quaternion

两个旋转做球面插值,t 的取值范围不做限制。

Parameters

SlerpFlat

javascript
SlerpFlat(dst : number[], dstOffset : number, src0 : number[], srcOffset0 : number, src1 : number[], srcOffset1 : number, t : number) : void

已数组表示的两个旋转做球面插值,t 在[0, 1]之间。当 t=0 时,返回 a,当 t=1 时,返回 b,将结果存入数组 dst 中。

Parameters

  • dst : number[] 存放计算结果的数组
  • dstOffset : number dst 的数据偏移量
  • src0 : number[] 参与计算的四元数数组
  • srcOffset0 : number src0 的数据偏移量
  • src1 : number[] 参与计算的四元数数组
  • srcOffset1 : number src1 的数据偏移量
  • t : number 在 src0 到 src1 之间做插值