避免多段线偏移多余的合并

pull/80/head
ChenX 6 years ago
parent ddce69f19c
commit 6353bfcc77

@ -127,6 +127,12 @@ export abstract class Curve extends Entity
return equalv3(this.StartPoint, pt, 1e-12) || equalv3(this.EndPoint, pt, 1e-12) || this.ParamOnCurve(this.GetParamAtPoint(pt));
}
//点在曲线中,不在起点或者终点.
PtOnCurve2(pt: Vector3): boolean
{
return !(equalv3(this.StartPoint, pt, 1e-12) || equalv3(this.EndPoint, pt, 1e-12)) && this.ParamOnCurve(this.GetParamAtPoint(pt), 0);
}
//参数在曲线上 容差,1e-12
ParamOnCurve(param: number, fuzz = 1e-12): boolean { return !isNaN(param) && param >= -fuzz && param <= this.EndParam + fuzz; }
GetOffsetCurves(offsetDist: number): Array<Curve> { return; }

@ -126,13 +126,16 @@ export class PolyOffsetUtil
if (c2b.min.y - 1e-6 > c1b.max.y)
continue;
if (c1.Join(c2) === Status.True)
{
this.m_RetCurves.splice(j, 1);
c1b = c1.BoundingBox;
boxCurves.set(c1, c1b);
j--;
}
//有共线部分才允许合并.
if (c2.PtOnCurve2(c1.StartPoint) || c2.PtOnCurve2(c1.EndPoint)
|| c1.PtOnCurve2(c2.StartPoint) || c1.PtOnCurve2(c2.EndPoint))
if (c1.Join(c2) === Status.True)
{
this.m_RetCurves.splice(j, 1);
c1b = c1.BoundingBox;
boxCurves.set(c1, c1b);
j--;
}
}
}
}

Loading…
Cancel
Save