优化:圆弧只用弓弦比千分一来模拟直线

pull/1918/head
ChenX 2 years ago
parent 5bcbf5723c
commit a98daefac1

@ -608,7 +608,7 @@ export class Arc extends Curve
let center = getCircleCenter(pt1, pt2, pt3); let center = getCircleCenter(pt1, pt2, pt3);
if (!center) if (!center)
{ {
this.ParseFromBul(pt1.applyMatrix4(this.OCSNoClone), pt3.applyMatrix4(this.OCSNoClone), 1e-5);//faker line this.ParseFromBul(pt1.applyMatrix4(this.OCSNoClone), pt3.applyMatrix4(this.OCSNoClone), 1e-3);//faker line
return this; return this;
}; };
@ -695,7 +695,7 @@ export class Arc extends Curve
let center = getCircleCenter(p1, p2, p3); let center = getCircleCenter(p1, p2, p3);
if (!center)//三点共线 使用faker arc if (!center)//三点共线 使用faker arc
{ {
this.ParseFromBul(p1.applyMatrix4(this.OCSNoClone), p3.applyMatrix4(this.OCSNoClone), 1e-5); this.ParseFromBul(p1.applyMatrix4(this.OCSNoClone), p3.applyMatrix4(this.OCSNoClone), 1e-3);
this.Update(); this.Update();
return; return;
} }
@ -705,7 +705,7 @@ export class Arc extends Curve
this._EndAngle = angle(p3.clone().sub(center)); this._EndAngle = angle(p3.clone().sub(center));
if (equaln(this._StartAngle, this._EndAngle, 1e-5))//差不多也是三点共线,只不过逃逸了 if (equaln(this._StartAngle, this._EndAngle, 1e-5))//差不多也是三点共线,只不过逃逸了
{ {
this.ParseFromBul(p1.applyMatrix4(this.OCSNoClone), p3.applyMatrix4(this.OCSNoClone), 1e-5); this.ParseFromBul(p1.applyMatrix4(this.OCSNoClone), p3.applyMatrix4(this.OCSNoClone), 1e-3);
this.Update(); this.Update();
return; return;
} }

@ -43,7 +43,7 @@ export class RoomWallArc extends RoomWallBase
//中心轴线 //中心轴线
override get CenterAxisCurve(): Arc | Line override get CenterAxisCurve(): Arc | Line
{ {
if (this._Radius < (this.Thickness * 0.6) || Math.abs(this.Bul) < 1e-4) if (this._Radius < (this.Thickness * 0.6) || Math.abs(this.Bul) < 0.0015)
return new Line(this.StartPoint, this.EndPoint); return new Line(this.StartPoint, this.EndPoint);
let arc = new Arc( let arc = new Arc(
ZeroVec, ZeroVec,

Loading…
Cancel
Save