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.
119 lines
3.4 KiB
119 lines
3.4 KiB
import { Polyline } from "../../src/DatabaseServices/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);
|
|
})
|
|
})
|
|
|