UNPKG

@polygonjs/polygonjs

Version:

node-based WebGL 3D engine https://polygonjs.com

55 lines (53 loc) 1.77 kB
import {Euler, Vector3, Quaternion} from 'three'; import {NamedFunction2, NamedFunction3, NamedFunction4} from './_Base'; export class quaternionSetFromEuler extends NamedFunction2<[Euler, Quaternion]> { static override type() { return 'quaternionSetFromEuler'; } func(euler: Euler, target: Quaternion): Quaternion { target.setFromEuler(euler); return target; } } export class quaternionSetFromAxisAngle extends NamedFunction3<[Vector3, number, Quaternion]> { static override type() { return 'quaternionSetFromAxisAngle'; } func(axis: Vector3, angle: number, target: Quaternion): Quaternion { target.setFromAxisAngle(axis, angle); return target; } } export class quaternionAngleTo extends NamedFunction2<[Quaternion, Quaternion]> { static override type() { return 'quaternionAngleTo'; } func(src: Quaternion, to: Quaternion): number { return src.angleTo(to); } } export class quaternionSlerp extends NamedFunction4<[Quaternion, Quaternion, number, Quaternion]> { static override type() { return 'quaternionSlerp'; } func(q1: Quaternion, q2: Quaternion, lerp: number, target: Quaternion): Quaternion { target.copy(q1).slerp(q2, lerp); return target; } } export class rotateWithAxisAngle extends NamedFunction4<[Vector3, Vector3, number, Vector3]> { static override type() { return 'rotateWithAxisAngle'; } func(vector: Vector3, axis: Vector3, angle: number, target: Vector3): Vector3 { return target.copy(vector).applyAxisAngle(axis, angle); } } export class rotateWithQuaternion extends NamedFunction3<[Vector3, Quaternion, Vector3]> { static override type() { return 'rotateWithQuaternion'; } func(vector: Vector3, quat: Quaternion, target: Vector3): Vector3 { return target.copy(vector).applyQuaternion(quat); } }