Appearance
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
- q : Insight.Quaternion 拷贝对象
equals
javascript
equals(b : Insight.Quaternion) : boolean
判断两个四元数是否相等。
Parameters
- b : Insight.Quaternion 另一个四元数
setFromAxisAngle
javascript
setFromAxisAngle(axis : Insight.Vector3, angle : number) : this
用旋转角和旋转轴设置四元数。
Parameters
- axis : Insight.Vector3 旋转轴
- angle : number 旋转角度
setFromRotationMatrix
javascript
setFromRotationMatrix(m : Insight.Matrix4x4) : this
用旋转矩阵设置四元数。
Parameters
- m : Insight.Matrix4x4 旋转矩阵
setFromToRotation
javascript
SetFromToRotation(vFrom : Insight.Vector3, vTo : Insight.Vector3) : this
将四元数设置为两个向量之间的旋转。
Parameters
- vFrom : Insight.Vector3 起始向量
- vTo : Insight.Vector3 目标向量
angleTo
javascript
angleTo(q : Insight.Quaternion) : number
返回两个四元数之间的弧度值。
Parameters
- q : Insight.Quaternion 另一个四元数
rotateTowards
javascript
rotateTowards(q : Insight.Quaternion, step : number) : Insight.Quaternion
朝另一个四元数以一定弧度值做旋转。
Parameters
- q : Insight.Quaternion 另一个四元数
- step : number 弧度值
inverse
javascript
inverse() : this
将此四元数转逆。
conjugate
javascript
conjugate() : this
将此四元数转为它的共轭。
dot
javascript
dot(q : Insight.Quaternion) : number
计算四元数的点乘。
Parameters
- q : Insight.Quaternion 另一个四元数
lengthSq
javascript
lengthSq() : number
计算四元数欧式长度的平方。类似于 Vector4 的长度计算,适用于比较两个四元数的长度,计算效率比 length() 高一点。
length
javascript
length() : number
计算四元数欧式长度。类似于 Vector4 的长度计算。
normalize
javascript
normalize() : this
归一化四元数。
multiply
javascript
multiply(q : Insight.Quaternion) : this
计算四元数的叉乘。
Parameters
- q : Insight.Quaternion 另一个四元数
premultiply
javascript
premultiply(q : Insight.Quaternion) : this
计算四元数的叉乘,与 multiply() 方法相乘顺序相反。
Parameters
- q : Insight.Quaternion 另一个四元数
multiplyQuaternions
javascript
multiplyQuaternions(a : Insight.Quaternion, b : Insight.Quaternion) : this
计算两个四元数 a 和 b 的叉乘并赋值给本四元数。
Parameters
- a : Insight.Quaternion a
- b : Insight.Quaternion b
slerp
javascript
slerp(q : Insight.Quaternion, t : number) : this
两个旋转做球面插值,t 在[0, 1]之间。当 t=0 时,返回当前四元数的值,当 t=1 时,返回 q 的值。
Parameters
- q : Insight.Quaternion 另一个四元数
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
- view : Insight.Vector3 前向量
- up : Insight.Vector3 上向量,默认是(0,1,0)
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
- a : Insight.Quaternion 旋转 a
- b : Insight.Quaternion 旋转 b
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
- angle : number 旋转角度
- axis : Insight.Vector3 旋转轴
Dot
javascript
Dot(a : Insight.Quaternion, b : Insight.Quaternion) : number
计算两个四元数的点积。
Parameters
- a : Insight.Quaternion 四元数 a
- b : Insight.Quaternion 四元数 b
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
- e : Insight.Vector3 欧拉角
FromToRotation
javascript
FromToRotation(fromDirection : Insight.Vector3, toDirction : Insight.Vector3) : Insight.Quaternion
计算两个向量之间的旋转。
Parameters
- fromDirection : Insight.Vector3 旋转起始方向
- toDirction : Insight.Vector3 旋转结束方向
Lerp
javascript
Lerp(a : Insight.Quaternion, b : Insight.Quaternion, t : number) : Insight.Quaternion
两个旋转做插值,t 在[0, 1]之间。当 t=0 时,返回 a,当 t=1 时,返回 b。
Parameters
- a : Insight.Quaternion 旋转 a
- b : Insight.Quaternion 旋转 b
- t : number 在 a 到 b 之间做插值
LerpUnclamped
javascript
LerpUnclamped(a : Insight.Quaternion, b : Insight.Quaternion, t : number) : Insight.Quaternion
两个旋转做插值,t 的取值范围不做限制。
Parameters
- a : Insight.Quaternion 旋转 a
- b : Insight.Quaternion 旋转 b
- t : number 在 a 到 b 之间做插值
LookRotation
javascript
LookRotation(view : Insight.Vector3, up? : Insight.Vector3) : Insight.Quaternion
根据前向量和上向量计算旋转。
Parameters
- view : Insight.Vector3 前向量
- up : Insight.Vector3 上向量,默认是(0,1,0)
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
- a : Insight.Quaternion 旋转 a
- b : Insight.Quaternion 旋转 b
- t : number 在 a 到 b 之间做插值
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
- a : Insight.Quaternion 旋转 a
- b : Insight.Quaternion 旋转 b
- m : Insight.Quaternion 接收计算结果的四元数
- t : number 在 a 到 b 之间做插值
SlerpUnclamped
javascript
SlerpUnclamped(a : Insight.Quaternion, b : Insight.Quaternion, t : number) : Insight.Quaternion
两个旋转做球面插值,t 的取值范围不做限制。
Parameters
- a : Insight.Quaternion 旋转 a
- b : Insight.Quaternion 旋转 b
- t : number 在 a 到 b 之间做插值
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 之间做插值