更新圆弧求交时的容差设置

pull/746/head
ChenX 5 years ago
parent 5b20565156
commit 8e3f64850f

@ -2,4 +2,4 @@
exports[`布尔_误差共线_误差交点 1`] = `739590.0297771678`; exports[`布尔_误差共线_误差交点 1`] = `739590.0297771678`;
exports[`布尔_误差共线_误差交点 2`] = `739582.7655079779`; exports[`布尔_误差共线_误差交点 2`] = `739582.752529773`;

@ -12,7 +12,8 @@ test('布尔_误差共线_误差交点', () =>
expect(regs[0].Area).toMatchSnapshot(); expect(regs[0].Area).toMatchSnapshot();
//弧形情况 //弧形情况
d = [2, "Region", 3, 2, 156, false, 1, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 3051.4141274641142, 141.87083942583706, 0, 1], 1, 1, 1, 1, "Polyline", 3, 2, 0, false, 0, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 3051.4141274641142, 141.87083942583706, 0, 1], 2, 4, [600, 0], 0, [600, 1241.380049628613], 0, [0, 1241.380049628613], 0, [0, 0], 0, true, 0, "Region", 3, 2, 155, false, 1, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 3051.4141274641142, 1374.2508890544507, 0, 1], 1, 1, 1, 1, "Polyline", 3, 2, 0, false, 0, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 3051.4141274641142, 1374.2508890544507, 0, 1], 2, 4, [0, 0], 0, [582, 0], 0.26581272283978424, [582, 8.999955254199449], 0, [0, 8.999955254199449], 0, true, 0]; d =
[2, "Region", 3, 2, 156, false, 1, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 3051.4141274641142, 141.87083942583706, 0, 1], 1, 1, 1, 1, "Polyline", 3, 2, 0, false, 0, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 3051.4141274641142, 141.87083942583706, 0, 1], 2, 4, [600, 0], 0, [600, 1241.380049628613], 0, [0, 1241.380049628613], 0, [0, 0], 0, true, 0, "Region", 3, 2, 155, false, 1, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 3051.4141274641142, 1374.2508890544507, 0, 1], 1, 1, 1, 1, "Polyline", 3, 2, 0, false, 0, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 3051.4141274641142, 1374.2508890544507, 0, 1], 2, 4, [0, 0], 0, [582, 0], 0.26581272283978424, [582, 8.999955254199449], 0, [0, 8.999955254199449], 0, true, 0];
regs = LoadRegionsFromFileData(d); regs = LoadRegionsFromFileData(d);
regs[0].BooleanOper(regs[1], BoolOpeartionType.Subtract); regs[0].BooleanOper(regs[1], BoolOpeartionType.Subtract);
expect(regs[0].Area).toMatchSnapshot(); expect(regs[0].Area).toMatchSnapshot();

@ -448,7 +448,7 @@ export class Arc extends Curve
return this; return this;
} }
IntersectWith2(curve: Curve, intType: IntersectOption, tolerance = 1e-6) IntersectWith2(curve: Curve, intType: IntersectOption, tolerance = 1e-4)
{ {
if (curve instanceof Arc) if (curve instanceof Arc)
{ {

@ -230,7 +230,7 @@ export function IntersectLineAndCircle(line: Line, circle: Circle, extType: Inte
export function IntersectLineAndArc(line: Line, arc: Arc, extType: IntersectOption, tolerance = 1e-6) export function IntersectLineAndArc(line: Line, arc: Arc, extType: IntersectOption, tolerance = 1e-6)
{ {
let ptArr = IntersectLineAndCircleOrArc(line, arc); let ptArr = IntersectLineAndCircleOrArc(line, arc);
return CheckPointOnCurve(ptArr, line, arc, extType); return CheckPointOnCurve(ptArr, line, arc, extType, tolerance);
} }
//直线和直线 //直线和直线
export function IntersectLAndLFor2D(p1: Vector3, p2: Vector3, p3: Vector3, p4: Vector3, tolerance = 1e-6): Vector3 export function IntersectLAndLFor2D(p1: Vector3, p2: Vector3, p3: Vector3, p4: Vector3, tolerance = 1e-6): Vector3
@ -430,7 +430,7 @@ export function IntersectPolylineAndCurve(pl: Polyline, cu: Curve, extType: Inte
pt: r.pt, pt: r.pt,
thisParam: pl.GetParamAtPoint(r.pt), thisParam: pl.GetParamAtPoint(r.pt),
argParam: cu.GetParamAtPoint(r.pt), argParam: cu.GetParamAtPoint(r.pt),
} };
})); }));
} }
} }
@ -503,7 +503,7 @@ export function IntersectLineAndEllipseFor2D(l: Line, el: Ellipse)
pt, pt,
thisParam: l.GetParamAtPoint(pt), thisParam: l.GetParamAtPoint(pt),
argParam: el.GetParamAtPoint(pt) argParam: el.GetParamAtPoint(pt)
} };
}); });
} }
export function IntersectEllipseAndCircleOrArc(el: Ellipse, cir: Circle | Arc, type: IntersectOption) export function IntersectEllipseAndCircleOrArc(el: Ellipse, cir: Circle | Arc, type: IntersectOption)
@ -557,12 +557,12 @@ export function IntersectEllipseAndCircleOrArc(el: Ellipse, cir: Circle | Arc, t
let ro = new Matrix4().makeRotationZ(el.Rotation); let ro = new Matrix4().makeRotationZ(el.Rotation);
let res = pts.map(p => let res = pts.map(p =>
{ {
let pt = p.applyMatrix4(ro).applyMatrix4(el.OCS) let pt = p.applyMatrix4(ro).applyMatrix4(el.OCS);
return { return {
pt, pt,
thisParam: el.GetParamAtPoint(pt), thisParam: el.GetParamAtPoint(pt),
argParam: cir.GetParamAtPoint(pt) argParam: cir.GetParamAtPoint(pt)
} };
}); });
return CheckPointOnCurve(res, el, cir, type); return CheckPointOnCurve(res, el, cir, type);
} }

Loading…
Cancel
Save