mirror of https://gitee.com/cf-fz/WebCAD.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
111 lines
2.6 KiB
111 lines
2.6 KiB
7 years ago
|
import * as THREE from 'three';
|
||
|
|
||
|
import { equaln ,equal} from '../../src/Geometry/GeUtils';
|
||
|
import { Orbit } from '../../src/Geometry/Orbit';
|
||
|
|
||
|
test("", () =>
|
||
|
{
|
||
|
//构造一个控制类.
|
||
|
let orb = new Orbit();
|
||
|
|
||
|
let dir = new THREE.Vector3(0, 1, 0);
|
||
|
|
||
|
orb.UpdateRoValue(dir);
|
||
|
|
||
|
expect(equaln(orb.RoX, 0)).toBe(true);
|
||
|
expect(equaln(orb.RoZ, Math.PI * 0.5)).toBe(true);
|
||
|
|
||
|
//试着还原
|
||
|
orb.UpdateDirection(dir);
|
||
|
expect(equal(dir, new THREE.Vector3(0, 1, 0))).toBe(true);
|
||
|
|
||
|
//试试新的
|
||
|
dir.set(1, 0, 0);
|
||
|
orb.UpdateRoValue(dir);
|
||
|
expect(equaln(orb.RoX, 0)).toBe(true);
|
||
|
expect(equaln(orb.RoZ, 0)).toBe(true);
|
||
|
|
||
|
//试着还原
|
||
|
orb.UpdateDirection(dir);
|
||
|
expect(equal(dir, new THREE.Vector3(1, 0, 0))).toBe(true);
|
||
|
|
||
|
//试试新的
|
||
|
dir.set(0.5, 0.5, 0).normalize();
|
||
|
|
||
|
let dirc = dir.clone();
|
||
|
orb.UpdateRoValue(dir);
|
||
|
|
||
|
//试着还原
|
||
|
orb.UpdateDirection(dir);
|
||
|
console.log('dir: ', dir);
|
||
|
expect(equal(dir, dirc)).toBe(true);
|
||
|
|
||
|
//试试新的
|
||
|
dir.set(0.5, 0.5, 1).normalize();
|
||
|
dirc = dir.clone();
|
||
|
orb.UpdateRoValue(dir);
|
||
|
|
||
|
//试着还原
|
||
|
orb.UpdateDirection(dir);
|
||
|
console.log('dir: ', dir);
|
||
|
expect(equal(dir, dirc)).toBe(true);
|
||
|
|
||
|
dir.set(0, 0, -1);
|
||
|
dirc = dir.clone();
|
||
|
orb.UpdateRoValue(dir);
|
||
|
|
||
|
expect(equaln(orb.RoZ, Math.PI * 0.5)).toBe(true);
|
||
|
expect(equaln(orb.RoX, Math.PI * -0.5)).toBe(true);
|
||
|
|
||
|
//试着还原
|
||
|
orb.UpdateDirection(dir);
|
||
|
console.log('dir: ', dir);
|
||
|
expect(equal(dir, dirc)).toBe(true);
|
||
|
|
||
|
|
||
|
let newDir = orb.UpdateDirection();
|
||
|
console.log('newDir: ', newDir);
|
||
|
|
||
|
|
||
|
let up = Orbit.ComputUpDirection(new THREE.Vector3(0, 0, 1));
|
||
|
expect(equal(up, new THREE.Vector3(0, -1, 0))).toBe(true);
|
||
|
|
||
|
Orbit.ComputUpDirection(new THREE.Vector3(0, 0, -1), up);
|
||
|
console.log(up);
|
||
|
|
||
|
Orbit.ComputUpDirection(new THREE.Vector3(0, 0, 1), up);
|
||
|
console.log(up);
|
||
|
|
||
|
Orbit.ComputUpDirection(new THREE.Vector3(1, 0, 0), up);
|
||
|
|
||
|
let newD = orb.UpdateDirection();
|
||
|
console.log(newD);
|
||
|
expect(equal(newD, new THREE.Vector3(0, 0, -1))).toBe(true);
|
||
|
|
||
|
|
||
|
})
|
||
|
|
||
|
|
||
|
test("测试求向量", () =>
|
||
|
{
|
||
|
let dir = new THREE.Vector3(0, 0, 1);
|
||
|
let up = Orbit.ComputUpDirection(dir);
|
||
|
|
||
|
console.log(up);
|
||
|
expect(up).toMatchSnapshot();
|
||
|
|
||
|
Orbit.ComputUpDirection(dir, up);
|
||
|
console.log(up);
|
||
|
expect(up).toMatchSnapshot();
|
||
|
|
||
|
dir.z = -1;
|
||
|
Orbit.ComputUpDirection(dir, up);
|
||
|
console.log('up: ', up);
|
||
|
expect(up).toMatchSnapshot();
|
||
|
|
||
|
dir.x = 1;
|
||
|
|
||
|
Orbit.ComputUpDirection(dir, up);
|
||
|
console.log('up: ', up);
|
||
|
expect(up).toMatchSnapshot();
|
||
|
})
|