gs-modelling
Version:
A set of 3D modelling functions for gs-JSON.
132 lines (122 loc) • 5.7 kB
text/typescript
import * as gs from "gs-json";
import * as threex from "../libs/threex/threex";
import * as gsm from "../_export_dev";
import {} from "jasmine";
describe("Tests for Obj Module", () => {
it("test_obj_Get", () => {
expect( test_obj_Get() ).toBe(true);
});
it("test_obj_Gets", () => {
expect( test_obj_Gets() ).toBe(true);
});
it("test_obj_groups", () => {
expect( test_obj_groups() ).toBe(true);
});
it("test_obj_move", () => {
expect( test_obj_move() ).toBe(true);
});
it("test_obj_rotate", () => {
expect( test_obj_rotate() ).toBe(true);
});
it("test_obj_xform", () => {
expect( test_obj_xform() ).toBe(true);
});
it("test_obj_mirror", () => {
expect( test_obj_mirror() ).toBe(true);
});
it("test_obj_xformGCS", () => {
expect( test_obj_xformGCS() ).toBe(true);
});
});
export function test_obj_Get(): boolean {
const m: gs.IModel = gsm.model.New();
const points: gs.IPoint[] = gsm.point.FromXYZs(m, [[1,2,3],[2,2,2],[-1,-2,-33],[1.1,2.2,3.3]]);
const x = gsm.pline.FromPoints(points, false);
const obj: gs.IObj = gsm.object.Get(m, 0);
if(obj === undefined) {return false;}
return true;
}
export function test_obj_Gets(): boolean {
const m: gs.IModel = gsm.model.New();
const points: gs.IPoint[] = gsm.point.FromXYZs(m, [[1,2,3],[2,2,2],[-1,-2,-33],[1.1,2.2,3.3]]);
gsm.pline.FromPoints(points, false);
gsm.circle.FromOriginXY(points[3], 12, [20,30]);
const objs: gs.IObj[] = gsm.object.Gets(m, [0, 1]);
if(objs[0] === undefined) {return false;}
if(objs[1] === undefined) {return false;}
return true;
}
export function test_obj_groups(): boolean {
const m: gs.IModel = gsm.model.New();
const ok: boolean = gsm.group.Create(m, "test");
const points: gs.IPoint[] = gsm.point.FromXYZs(m, [[1,2,3],[2,2,2],[-1,-2,-33],[1.1,2.2,3.3]]);
const pline: gs.IPolyline = gsm.pline.FromPoints(points, false);
const circle: gs.ICircle = gsm.circle.FromOriginXY(points[1], 5, null);
gsm.object.addToGroup([pline, circle], "test");
const objs: gs.IObj[] = gsm.object.GetFromGroup(m, "test");
if (objs.length !== 2) {return false;}
gsm.object.removeFromGroup(circle, "test");
const objs2: gs.IObj[] = gsm.object.GetFromGroup(m, "test");
if (objs2.length !== 1) {return false;}
return true;
}
export function test_obj_move(): boolean {
const m: gs.IModel = gsm.model.New();
const p1: gs.IPoint = gsm.point.FromXYZ(m, [1,1,1]);
const p2: gs.IPoint = gsm.point.FromXYZ(m, [2,2,2]);
const p3: gs.IPoint = gsm.point.FromXYZ(m, [3,3,3]);
const circle: gs.ICircle = gsm.circle.FromOrigin2Vectors(p1, [0, 1, 0], [0, 0, 1], null);
gsm.object.move(circle, [1,2,3]);
if (circle.getOrigin().getPosition()[1] !== 3) { return false; }
return true;
}
export function test_obj_rotate(): boolean {
const m: gs.IModel = gsm.model.New();
const p1: gs.IPoint = gsm.point.FromXYZ(m, [1,0,1]);
const p2: gs.IPoint = gsm.point.FromXYZ(m, [2,2,6]);
const p3: gs.IPoint = gsm.point.FromXYZ(m, [4,1,3]);
const pline: gs.IPolyline = gsm.pline.FromPoints([p1, p2, p3], false);
const circle: gs.ICircle = gsm.circle.FromOrigin2Vectors(p1, [0, 1, 0], [0, 0, 1], null);
gsm.object.rotate(circle, [0,0,0], [0,0,1], 30, true);
gsm.object.rotate(pline, [0,0,0], [0,0,1], 60, true);
if (m.getGeom().numPoints() !== 7) {return false; }
return true;
}
export function test_obj_xform(): boolean {
const m: gs.IModel = gsm.model.New();
const p1: gs.IPoint = gsm.point.FromXYZ(m, [0,0,0]);
const circle: gs.ICircle = gsm.circle.FromOrigin2Vectors(p1, [1,0,0], [0,1,0], null);
gsm.object.xformGcs2Lcs(circle, [7,8,9], [1,0,0], [0,1,0], true);
const p2: gs.IPoint = gsm.point.FromXYZ(m, [1,1,1]);
const p3: gs.IPoint = gsm.point.FromXYZ(m, [2,2,2]);
const pline: gs.IPolyline = gsm.pline.FromPoints([p2, p3], false);
gsm.object.xformGcs2Lcs(pline, [5,6,7], [1,0,0], [0,1,0], false);
//if (m.getGeom().numPoints() !== 2) {return false; }
return true;
}
export function test_obj_mirror(): boolean {
const m: gs.IModel = gsm.model.New();
const p1: gs.IPoint = gsm.point.FromXYZ(m, [1,0,1]);
const p2: gs.IPoint = gsm.point.FromXYZ(m, [2,2,6]);
const p3: gs.IPoint = gsm.point.FromXYZ(m, [4,1,3]);
const pline: gs.IPolyline = gsm.pline.FromPoints([p1, p2, p3], false);
const circle: gs.ICircle = gsm.circle.FromOrigin2Vectors(p1, [0, 1, 0], [0, 0, 1], null);
gsm.object.mirror([pline, circle], p1, [1,2,3], true);
if (m.getGeom().numPoints() !== 6) {return false; }
return true;
}
export function test_obj_xformGCS(): boolean {
const m: gs.IModel = gsm.model.New();
const pts: gs.IPoint[] = gsm.point.FromXYZs(m, [[-5,-5,0],[5,-5,0],[5,5,0],[-5,5,0]]);
const mesh: gs.IPolymesh = gsm.pmesh.FromPoints([pts]);
gsm.object.rotate(mesh, [0,0,0], [1,1,0], 30, false);
gsm.object.move(mesh, [10, 10, 10], false);
const origin1: gs.IPoint = gsm.point.FromXYZ(m, [0,0,0]);
const circle: gs.ICircle = gsm.circle.FromOriginXY(origin1, 8, null);
const points: gs.IPoint[] = gsm.pmesh.getPoints(mesh);
const origin2: gs.IPoint = gsm.point.FromPointsMean(points);
const vec1 = threex.vectorFromPointsAtoB(points[0], points[1]);
const vec2 = threex.vectorFromPointsAtoB(points[0], points[3]);
gsm.object.xformGcs2Lcs(circle, origin2, vec1.toArray() as gs.XYZ, vec2.toArray() as gs.XYZ, true);
return true;
}