曲线合并导致的多段线合并错误.

pull/83/MERGE
ChenX 6 years ago
parent bd4f42af39
commit a5e70aab01

@ -64,6 +64,10 @@ exports[`复杂圆盘选点 9`] = `1`;
exports[`复杂圆盘选点 10`] = `206.82332282556683`;
exports[`多段线因为合并问题造成的错误 1`] = `1`;
exports[`多段线因为合并问题造成的错误 2`] = `2210.3833040297095`;
exports[`多段线存在0长度线段导致偏移错误 1`] = `1`;
exports[`多段线存在0长度线段导致偏移错误 2`] = `81933.70549460054`;

@ -900,3 +900,12 @@ test('纯圆生成的多段线偏移', () =>
testOffset(pl, 100);
testOffset(pl, -100);
});
test('多段线因为合并问题造成的错误', () =>
{
let pl = loadFile(
[1, ["Polyline", 1, 1, 38, false, 7, -1, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 2, 10, [560.4622946261899, 280.3468208092485], 0, [273.1213872832369, 280.3468208092485], 0, [273.1213872832369, 70.80924855491334], 0, [273.1213872832369, 70.80924855491334], 0, [520.5860801571987, 70.80924855491334], 0.45552774411272906, [773.2934581245079, 9.947706891888771], 1.0105662598284268, [843.111615774608, 120.72879526430421], 0.42745194242823337, [695.3090834219281, 321.1478937918483], 3.4733857741050023, [602.1148370593586, 307.0986147536708], 0.07222028753966563, [560.4622946261899, 280.3468208092485], 0, false]]
)[0];
testOffset(pl, 37.8831);
});

@ -128,7 +128,9 @@ export class PolyOffsetUtil
//有共线部分才允许合并.
if (c2.PtOnCurve2(c1.StartPoint) || c2.PtOnCurve2(c1.EndPoint)
|| c1.PtOnCurve2(c2.StartPoint) || c1.PtOnCurve2(c2.EndPoint))
|| c1.PtOnCurve2(c2.StartPoint) || c1.PtOnCurve2(c2.EndPoint)
|| (c1.PtOnCurve(c2.StartPoint) && c1.PtOnCurve(c2.EndPoint))
)
if (c1.Join(c2) === Status.True)
{
this.m_RetCurves.splice(j, 1);

Loading…
Cancel
Save