gs-modelling
Version:
A set of 3D modelling functions for gs-JSON.
91 lines (83 loc) • 3.9 kB
text/typescript
import * as gs from "gs-json";
import * as gsm from "../_export_dev";
import {} from "jasmine";
describe("Tests for Pline Module", () => {
it("test_circle_FromOriginVectors", () => {
expect( test_circle_FromOriginVectors() ).toBe(true);
});
it("test_circle_From3Points", () => {
expect( test_circle_From3Points() ).toBe(true);
});
it("test_circle_ArcFrom3Points", () => {
expect( test_circle_ArcFrom3Points() ).toBe(true);
});
it("test_circle_testToJson", () => {
expect( test_circle_testToJson() ).toBe(true);
});
it("test_circle_tangentPlinesInner2D", () => {
expect( test_circle_tangentPlinesInner2D() ).toBe(true);
});
});
export function test_circle_FromOriginVectors(): 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, [0, 1, 0], [0, 0, 1], null);
if (circle === undefined) { return false; }
return true;
}
export function test_circle_From3Points(): boolean {
const m: gs.IModel = gsm.model.New();
const p1: gs.IPoint = gsm.point.FromXYZ(m, [0, 0, 0]);
const p2: gs.IPoint = gsm.point.FromXYZ(m, [4, 10, 7]);
const p3: gs.IPoint = gsm.point.FromXYZ(m, [2, 1, -3]);
const circle: gs.ICircle = gsm.circle.From3Points(p1, p2, p3, false);
if (circle === undefined) { return false; }
return true;
}
export function test_circle_ArcFrom3Points(): boolean {
const m: gs.IModel = gsm.model.New();
const p1: gs.IPoint = gsm.point.FromXYZ(m, [0, 0, 0]);
const p2: gs.IPoint = gsm.point.FromXYZ(m, [10, 0.5, 0]);
const p3: gs.IPoint = gsm.point.FromXYZ(m, [0, 1, 0]);
const arc: gs.ICircle = gsm.circle.From3Points(p1, p2, p3, true);
if (arc === undefined) { return false; }
const p4: gs.IPoint = gsm.point.FromXYZ(m, [10, 0, 10]);
const arc2: gs.ICircle = gsm.circle.From3Points(p1, p2, p4, true);
if (arc2 === undefined) { return false; }
return true;
}
export function test_circle_testToJson(): boolean {
const m: gs.IModel = gsm.model.New();
const p1: gs.IPoint = gsm.point.FromXYZ(m, [1, 0, 0]);
const p2: gs.IPoint = gsm.point.FromXYZ(m, [2, 0, 0]);
const p3: gs.IPoint = gsm.point.FromXYZ(m, [3, 0, 0]);
gsm.point.del([p2, p3]);
const p4: gs.IPoint = gsm.point.FromXYZ(m, [4, 0, 0]);
const circle: gs.ICircle = gsm.circle.FromOrigin2Vectors(p1, [0, 1, 0], [0, 0, 1], null);
const result: string = m.toJSON();
if (!circle.isClosed() ) { return false;}
//console.log(result);
return true;
}
export function test_circle_tangentPlinesInner2D(): boolean {
const m: gs.IModel = gsm.model.New();
{
const p1: gs.IPoint = gsm.point.FromXYZ(m, [-10.234, 0, 8]);
const circle1: gs.ICircle = gsm.circle.FromOrigin2Vectors(p1, [1, 0, 2], [-3, 0, 3], null);
const p2: gs.IPoint = gsm.point.FromXYZ(m, [11, 0, -2.345]);
const circle2: gs.ICircle = gsm.circle.FromOrigin2Vectors(p2, [2, 0, 7], [-1, 0, 1], null);
const plines: gs.IPolyline[] = gsm.circle.tangentPlinesInner2D(circle1, circle2);
if (plines === null) {return false;}
if (plines[1] === undefined) {return false;}
}
{
const p1: gs.IPoint = gsm.point.FromXYZ(m, [0,0,0]);
const circle1: gs.ICircle = gsm.circle.FromOrigin2Vectors(p1, [1, 0, 0], [0, 1, 0], null);
const p2: gs.IPoint = gsm.point.FromXYZ(m, [10,0,0]);
const circle2: gs.ICircle = gsm.circle.FromOrigin2Vectors(p2, [3, 0, 0], [0, 1, 0], null);
const plines: gs.IPolyline[] = gsm.circle.tangentPlinesInner2D(circle1, circle2);
if (plines === null) {return false;}
if (plines[1] === undefined) {return false;}
}
return true;
}