From 3fa928b2a56d13c5fe3d8f7d5f5641ca929d5928 Mon Sep 17 00:00:00 2001 From: ChenX Date: Thu, 22 Feb 2018 14:53:46 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B8=85=E7=90=86=E5=8D=95=E5=85=83=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=E4=BB=A3=E7=A0=81.=20=E5=AF=B9=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E9=A3=8E=E6=A0=BC=E5=81=9A=E5=87=BA=E4=BF=AE=E6=94=B9.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- __test__/Geometry/angleTo.test.ts | 24 +++++++++++++++--------- src/Geometry/GeUtils.ts | 3 +-- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/__test__/Geometry/angleTo.test.ts b/__test__/Geometry/angleTo.test.ts index ec5419b10..ef84df478 100644 --- a/__test__/Geometry/angleTo.test.ts +++ b/__test__/Geometry/angleTo.test.ts @@ -2,32 +2,38 @@ import { angleTo } from '../../src/Geometry/GeUtils'; import { Vector3 } from "three"; test('俯视图', () => { - //-0.5pi 逆时针 + //逆时针 let v = angleTo(new Vector3(1, 0, 0), new Vector3(0, 1, 0), new Vector3(0, 0, 1)) //? - expect(v).toEqual(Math.PI * -0.5) + expect(v).toEqual(Math.PI * 0.5) - //-0.5pi 顺时针 + //顺时针 let v2 = angleTo(new Vector3(0, 1, 0), new Vector3(1, 0, 0), new Vector3(0, 0, 1)) //? - expect(v2).toEqual(Math.PI * 0.5) + expect(v2).toEqual(Math.PI * -0.5) }); test('仰视', () => { - //-0.5pi 顺时针 + //顺时针 let v = angleTo(new Vector3(1, 0, 0), new Vector3(0, 1, 0), new Vector3(0, 0, -1)) //? - expect(v).toEqual(Math.PI * 0.5) + expect(v).toEqual(Math.PI * -0.5) }); test('右视图', () => { let v = angleTo(new Vector3(0, 0, 1), new Vector3(0, 1, 0), new Vector3(1, 0, 0)) //? - expect(v).toEqual(Math.PI * 0.5) + expect(v).toEqual(Math.PI * -0.5) v = angleTo(new Vector3(0, 1, 0), new Vector3(0, 0, 1), new Vector3(1, 0, 0)) //? - expect(v).toEqual(Math.PI * -0.5) + expect(v).toEqual(Math.PI * 0.5) }); test('0向量', () => { let v = angleTo(new Vector3(1, 0, 0), new Vector3(0, 0, 1), new Vector3(1, 0, 0)) //? expect(v).toEqual(0) -}); \ No newline at end of file +}); + +test('变量补全', () => +{ + let v = angleTo(new Vector3(1, 0, 0), new Vector3(0, 0, 1)) //? + expect(v).toEqual(0) +}); diff --git a/src/Geometry/GeUtils.ts b/src/Geometry/GeUtils.ts index 274b2f30e..d35467261 100644 --- a/src/Geometry/GeUtils.ts +++ b/src/Geometry/GeUtils.ts @@ -50,9 +50,8 @@ export function polar(v: THREE.Vector3, an: number, dis: number) * @param {THREE.Vector3} [ref] 参考向量,如果为世界坐标系则为0,0,1 * @returns */ -export function angleTo(v1: THREE.Vector3, v2: THREE.Vector3, ref?: THREE.Vector3) +export function angleTo(v1: THREE.Vector3, v2: THREE.Vector3, ref: THREE.Vector3 = new THREE.Vector3(0, 0, 1)) { - ref = ref || new Vector3(0, 0, 1); if (!ref.equals(new Vector3(0, 0, 1))) { //任意轴坐标系. 使用相机的构造矩阵.