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.
145 lines
3.0 KiB
145 lines
3.0 KiB
7 years ago
|
import { Vector2, Vector3 } from 'three';
|
||
|
|
||
|
import { IsPointInPolyLine } from '../../src/DatabaseServices/PointInPolyline';
|
||
|
import { Polyline } from '../../src/DatabaseServices/Polyline';
|
||
|
|
||
|
|
||
|
test('点在多段线内', () =>
|
||
|
{
|
||
|
|
||
|
let pl = new Polyline([
|
||
|
{
|
||
|
pt: new Vector2(0, 0),
|
||
|
bul: 0
|
||
|
},
|
||
|
{
|
||
|
pt: new Vector2(10, 0),
|
||
|
bul: 0
|
||
|
},
|
||
|
{
|
||
|
pt: new Vector2(10, 10),
|
||
|
bul: 0
|
||
|
},
|
||
|
{
|
||
|
pt: new Vector2(8, 10),
|
||
|
bul: 0
|
||
|
},
|
||
|
{
|
||
|
pt: new Vector2(8, 5),
|
||
|
bul: 0
|
||
|
},
|
||
|
{
|
||
|
pt: new Vector2(4, 5),
|
||
|
bul: 0
|
||
|
},
|
||
|
{
|
||
|
pt: new Vector2(4, 10),
|
||
|
bul: 0
|
||
|
},
|
||
|
{
|
||
|
pt: new Vector2(0, 10),
|
||
|
bul: 0
|
||
|
},
|
||
|
]);
|
||
|
|
||
|
pl.CloseMark = true;
|
||
|
|
||
|
let bIn = IsPointInPolyLine(pl, new Vector3(8, 3));//?
|
||
|
|
||
|
expect(bIn).toBeTruthy();
|
||
|
});
|
||
|
|
||
|
describe("", () =>
|
||
|
{
|
||
|
test('退化', () =>
|
||
|
{
|
||
|
let pl = new Polyline(
|
||
|
[
|
||
|
{
|
||
|
pt: new Vector2(0, 0),
|
||
|
bul: 0
|
||
|
},
|
||
|
{
|
||
|
pt: new Vector2(10, 0),
|
||
|
bul: 0
|
||
|
},
|
||
|
{
|
||
|
pt: new Vector2(5, 5),
|
||
|
bul: 0
|
||
|
},
|
||
|
])
|
||
|
|
||
|
pl.CloseMark = true;
|
||
|
|
||
|
expect(IsPointInPolyLine(pl, new Vector3(5, 2))).toBeTruthy();
|
||
|
});
|
||
|
|
||
|
test('退化2', () =>
|
||
|
{
|
||
|
//右边中间 <
|
||
|
let pl = new Polyline(
|
||
|
[
|
||
|
{
|
||
|
pt: new Vector2(0, 0),
|
||
|
bul: 0
|
||
|
},
|
||
|
{
|
||
|
pt: new Vector2(10, 0),
|
||
|
bul: 0
|
||
|
},
|
||
|
{
|
||
|
pt: new Vector2(5, 5),
|
||
|
bul: 0
|
||
|
},
|
||
|
{
|
||
|
pt: new Vector2(10, 10),
|
||
|
bul: 0
|
||
|
},
|
||
|
{
|
||
|
pt: new Vector2(0, 10),
|
||
|
bul: 0
|
||
|
},
|
||
|
])
|
||
|
|
||
|
pl.CloseMark = true;
|
||
|
|
||
|
expect(IsPointInPolyLine(pl, new Vector3(5, 2))).toBeTruthy();
|
||
|
});
|
||
|
|
||
|
|
||
|
test('左边中间', () =>
|
||
|
{
|
||
|
//左边中间
|
||
|
let pl = new Polyline([
|
||
|
{
|
||
|
pt: new Vector2(0, 0),
|
||
|
bul: 0
|
||
|
},
|
||
|
{
|
||
|
pt: new Vector2(10, 0),
|
||
|
bul: 0
|
||
|
},
|
||
|
{
|
||
|
pt: new Vector2(10, 10),
|
||
|
bul: 0
|
||
|
},
|
||
|
{
|
||
|
pt: new Vector2(0, 10),
|
||
|
bul: 0
|
||
|
},
|
||
|
{
|
||
|
pt: new Vector2(0, 8),
|
||
|
bul: 0
|
||
|
},
|
||
|
|
||
|
{
|
||
|
pt: new Vector2(5, 5),
|
||
|
bul: 0
|
||
|
}]
|
||
|
)
|
||
|
pl.CloseMark = true;
|
||
|
|
||
|
expect(IsPointInPolyLine(pl, new Vector3(5, 2))).toBeTruthy();
|
||
|
});
|
||
|
})
|