import { Vector2 } from "three"; import { Polyline } from "../../src/DatabaseServices/Entity/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(); } });