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.
WebCAD/__test__/Polyline/PolylineGetPointAtParam.tes...

86 lines
1.9 KiB

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();
}
});