diff --git a/src/02-quaternion/Quaternion.ts b/src/02-quaternion/Quaternion.ts index 62b877e2a152916fbf5fcf00d14af61676b9b9e8..227f697196e298dc8f57d7f0e4587d2f68569658 100644 --- a/src/02-quaternion/Quaternion.ts +++ b/src/02-quaternion/Quaternion.ts @@ -116,7 +116,7 @@ export class Quaternion { const sinTheta0 = Math.sin(theta0); const sinTheta = Math.sin(theta); - const s0 = Math.cos(theta0) - dot * sinTheta / sinTheta0; + const s0 = Math.cos(theta) - dot * sinTheta / sinTheta0; const s1 = sinTheta / sinTheta0; return Quaternion.add( @@ -168,6 +168,6 @@ export class Quaternion { } public static inverse(qa: Quaternion): Quaternion { - return new Quaternion(-qa._x, -qa._y, -qa._z, qa._w); + return new Quaternion(-qa._x, -qa._y, -qa._z, -qa._w); } } \ No newline at end of file diff --git a/src/02-quaternion/Rotator.ts b/src/02-quaternion/Rotator.ts index 16990162ab0b330a1f5b9d7968dc376668c0cae6..927796fd8f3155e33225634144540c0d8e603555 100644 --- a/src/02-quaternion/Rotator.ts +++ b/src/02-quaternion/Rotator.ts @@ -167,9 +167,9 @@ class Rotator implements PipelineObserver, PipelineGUI { if (this._mode === Mode[0] && this._orientations.length !== 0) { this._objectReference.setRotationFromMatrix(this._orientations[this._index].eulerMatrix); } else if (this._mode === Mode[1] && this._orientations.length > 1) { - let result: Quaternion = Quaternion.slerp(this._orientations[0], this._orientations[1], this._t); + let result: Quaternion = Quaternion.slerpCG3(this._orientations[0], this._orientations[1], this._t); for (let i = 2; i < this._orientations.length; i++) { - result = Quaternion.slerp(result, this._orientations[i], this._t); + result = Quaternion.slerpCG3(result, this._orientations[i], this._t); } this._objectReference.setRotationFromMatrix(result.eulerMatrix); this._slerp.copy(result);