import { Polyline } from "../../src/DatabaseServices/Entity/Polyline"; import { Vector2, Vector3 } from "three"; import { IntersectOption } from "../../src/GraphicsSystem/IntersectWith"; describe("相交", () => { test("不相交曲线", () => { let pl = new Polyline([ { pt: new Vector2(37, 5), bul: -1.63 }, { pt: new Vector2(26.7, -4), bul: 0.32 }, ]); let p2 = new Polyline([ { pt: new Vector2(26, -3), bul: 0.32 }, { pt: new Vector2(9.5, -8.2), bul: 2.01 }, ]); let pts = pl.IntersectWith(p2, IntersectOption.OnBothOperands); expect(pts.length).toBe(0); let pts1 = pl.IntersectWith(p2, IntersectOption.ExtendBoth); expect(pts1.length).toBe(2); let pts2 = pl.IntersectWith(p2, IntersectOption.ExtendThis); expect(pts2.length).toBe(0); let pts3 = pl.IntersectWith(p2, IntersectOption.ExtendArg); expect(pts3.length).toBe(1); }); test("相交曲线", () => { let pl = new Polyline([ { pt: new Vector2(0, 0), bul: 1 }, { pt: new Vector2(0, 5), bul: 0.32 }, ]); let p2 = new Polyline([ { pt: new Vector2(-1, 0), bul: -1 }, { pt: new Vector2(4, 0), bul: 0 }, ]); let p3 = new Polyline([ { pt: new Vector2(0, 0), bul: 0 }, { pt: new Vector2(3, 3), bul: 0 }, ]); let p4 = new Polyline([ { pt: new Vector2(0, 0), bul: 0 }, { pt: new Vector2(1, 1), bul: 0 }, ]); let p5 = new Polyline([ { pt: new Vector2(1, 0), bul: 0 }, { pt: new Vector2(1, 0.5), bul: 0 }, ]); let p6 = new Polyline([ { pt: new Vector2(0, 0), bul: 0 }, { pt: new Vector2(3, 3), bul: 0 }, ]); let pts = pl.IntersectWith(p2, IntersectOption.OnBothOperands); expect(pts.length).toBe(1); let pts1 = pl.IntersectWith(p2, IntersectOption.ExtendBoth); expect(pts1.length).toBe(2); let pts2 = pl.IntersectWith(p2, IntersectOption.ExtendThis); expect(pts2.length).toBe(2); let pts3 = pl.IntersectWith(p2, IntersectOption.ExtendArg); expect(pts3.length).toBe(1); let pts4 = pl.IntersectWith(p3, IntersectOption.OnBothOperands); expect(pts).toMatchSnapshot(); expect(pts4.length).toBe(2); let pts5 = pl.IntersectWith(p4, IntersectOption.OnBothOperands); expect(pts5.length).toBe(1); let pts6 = pl.IntersectWith(p4, IntersectOption.ExtendArg); expect(pts6.length).toBe(2); let pts7 = p5.IntersectWith(p6, IntersectOption.ExtendThis); expect(pts7.length).toBe(1); }); });