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.
86 lines
1.9 KiB
86 lines
1.9 KiB
7 years ago
|
import { Vector2 } from "three";
|
||
|
import { Polyline } from "../../src/DatabaseServices/Polyline";
|
||
|
import { equaln } from "../../src/Geometry/GeUtils";
|
||
|
|
||
|
test('获得点,来自参数', () =>
|
||
|
{
|
||
|
let pl = new Polyline([
|
||
|
{
|
||
|
pt: new Vector2(0, 0),
|
||
|
bul: 0
|
||
|
},
|
||
|
{
|
||
|
pt: new Vector2(5, 0),
|
||
|
bul: 1
|
||
|
},
|
||
|
{
|
||
|
pt: new Vector2(5, 5),
|
||
|
bul: -1
|
||
|
},
|
||
|
{
|
||
|
pt: new Vector2(5, 10),
|
||
|
bul: 0
|
||
|
},
|
||
|
{
|
||
|
pt: new Vector2(0, 10),
|
||
|
bul: 0
|
||
|
},
|
||
|
{
|
||
|
pt: new Vector2(0, 0),
|
||
|
bul: 0
|
||
|
}
|
||
|
]);
|
||
|
|
||
|
//不闭合时
|
||
|
pl.CloseMark = false;
|
||
|
for (let p = -2; p < 7; p += 0.2)
|
||
|
{
|
||
|
let pt = pl.GetPointAtParam(p);
|
||
|
|
||
|
//反向测试
|
||
|
if (pt)
|
||
|
{
|
||
|
let pn = pl.GetParamAtPoint(pt);
|
||
|
|
||
|
if (equaln(pn, 0))
|
||
|
{
|
||
|
expect(equaln(p, 0) || equaln(p, pl.EndParam)).toBeTruthy();
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
expect(equaln(p, pn)).toBeTruthy();
|
||
|
}
|
||
|
}
|
||
|
//测试一阶导数
|
||
|
let deriv = pl.GetFistDeriv(p);
|
||
|
expect(deriv).toMatchSnapshot();
|
||
|
expect(pt).toMatchSnapshot();
|
||
|
}
|
||
|
//闭合时
|
||
|
pl.CloseMark = true;
|
||
|
for (let p = -2; p < 7; p += 0.3)
|
||
|
{
|
||
|
let pt = pl.GetPointAtParam(p);
|
||
|
|
||
|
//反向测试
|
||
|
if (pt)
|
||
|
{
|
||
|
let pn = pl.GetParamAtPoint(pt);
|
||
|
|
||
|
if (equaln(pn, 0))
|
||
|
{
|
||
|
expect(equaln(pn, 0) || equaln(p, pl.EndParam)).toBeTruthy();
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
expect(equaln(p, pn)).toBeTruthy();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
//测试一阶导数
|
||
|
let deriv = pl.GetFistDeriv(p);
|
||
|
expect(deriv).toMatchSnapshot();
|
||
|
expect(pt).toMatchSnapshot();
|
||
|
}
|
||
|
});
|