Spaces:
Running
Running
File size: 3,368 Bytes
6cd9596 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 |
import { Euler } from './Euler';
import { Vector3 } from './Vector3';
import { Matrix4 } from './Matrix4';
/**
* Implementation of a quaternion. This is used for rotating things without incurring in the dreaded gimbal lock issue, amongst other advantages.
*
* @example
* var quaternion = new THREE.Quaternion();
* quaternion.setFromAxisAngle( new THREE.Vector3( 0, 1, 0 ), Math.PI / 2 );
* var vector = new THREE.Vector3( 1, 0, 0 );
* vector.applyQuaternion( quaternion );
*/
export class Quaternion {
/**
* @param x x coordinate
* @param y y coordinate
* @param z z coordinate
* @param w w coordinate
*/
constructor(x?: number, y?: number, z?: number, w?: number);
x: number;
y: number;
z: number;
w: number;
/**
* Sets values of this quaternion.
*/
set(x: number, y: number, z: number, w: number): Quaternion;
/**
* Clones this quaternion.
*/
clone(): this;
/**
* Copies values of q to this quaternion.
*/
copy(q: Quaternion): this;
/**
* Sets this quaternion from rotation specified by Euler angles.
*/
setFromEuler(euler: Euler, update?: boolean): Quaternion;
/**
* Sets this quaternion from rotation specified by axis and angle.
* Adapted from http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm.
* Axis have to be normalized, angle is in radians.
*/
setFromAxisAngle(axis: Vector3, angle: number): Quaternion;
/**
* Sets this quaternion from rotation component of m. Adapted from http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm.
*/
setFromRotationMatrix(m: Matrix4): Quaternion;
setFromUnitVectors(vFrom: Vector3, vTo: Vector3): Quaternion;
angleTo(q: Quaternion): number;
rotateTowards(q: Quaternion, step: number): Quaternion;
/**
* Inverts this quaternion.
*/
inverse(): Quaternion;
conjugate(): Quaternion;
dot(v: Quaternion): number;
lengthSq(): number;
/**
* Computes length of this quaternion.
*/
length(): number;
/**
* Normalizes this quaternion.
*/
normalize(): Quaternion;
/**
* Multiplies this quaternion by b.
*/
multiply(q: Quaternion): Quaternion;
premultiply(q: Quaternion): Quaternion;
/**
* Sets this quaternion to a x b
* Adapted from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm.
*/
multiplyQuaternions(a: Quaternion, b: Quaternion): Quaternion;
slerp(qb: Quaternion, t: number): Quaternion;
equals(v: Quaternion): boolean;
fromArray(n: number[]): Quaternion;
toArray(): number[];
fromArray(xyzw: number[], offset?: number): Quaternion;
toArray(xyzw?: number[], offset?: number): number[];
onChange(callback: Function): Quaternion;
onChangeCallback: Function;
/**
* Adapted from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/.
*/
static slerp(
qa: Quaternion,
qb: Quaternion,
qm: Quaternion,
t: number
): Quaternion;
static slerpFlat(
dst: number[],
dstOffset: number,
src0: number[],
srcOffset: number,
src1: number[],
stcOffset1: number,
t: number
): Quaternion;
/**
* @deprecated Use {@link Vector#applyQuaternion vector.applyQuaternion( quaternion )} instead.
*/
multiplyVector3(v: any): any;
}
|