calculating tesselation scale

This commit is contained in:
Val Erastov 2022-08-30 19:28:06 -07:00
parent 38cffa5e6c
commit bb234a7c57
2 changed files with 34 additions and 2 deletions

View file

@ -4,7 +4,12 @@ export class SketchObjectView extends CurveBasedView {
constructor(ctx, mSketchObject, sketchToWorldTransformation) { constructor(ctx, mSketchObject, sketchToWorldTransformation) {
const color = mSketchObject.construction ? 0x964B00 : 0x0000FF; const color = mSketchObject.construction ? 0x964B00 : 0x0000FF;
const tess = mSketchObject.sketchPrimitive.tessellate(10).map(sketchToWorldTransformation.apply).map(v => v.data());
const massiveness = mSketchObject.sketchPrimitive.massiveness();
const MAGIC_RATIO = 0.01;
const tess = mSketchObject.sketchPrimitive.tessellate(massiveness * MAGIC_RATIO)
.map(sketchToWorldTransformation.apply).map(v => v.data());
super(ctx, mSketchObject, tess, 3, color); super(ctx, mSketchObject, tess, 3, color);
this.representation.onDblclick = () => { this.representation.onDblclick = () => {
ctx.sketcherService.sketchFace(this.model.face); ctx.sketcherService.sketchFace(this.model.face);

View file

@ -26,7 +26,7 @@ export class SketchPrimitive {
} }
tessellate(resolution) { tessellate(resolution) {
return this.toNurbs(CSys.ORIGIN).tessellate(); return this.toNurbs(CSys.ORIGIN).tessellate(resolution);
// return brepCurve.impl.verb.tessellate().map(p => new Vector().set3(p) ); // return brepCurve.impl.verb.tessellate().map(p => new Vector().set3(p) );
// const tessellation = this.tessellateImpl(resolution); // const tessellation = this.tessellateImpl(resolution);
@ -67,6 +67,10 @@ export class SketchPrimitive {
toOCCGeometry(oci: OCCCommandInterface, underName: string, csys: CSys) { toOCCGeometry(oci: OCCCommandInterface, underName: string, csys: CSys) {
throw 'not implemented' throw 'not implemented'
} }
massiveness() {
return 50;
}
} }
export class Segment extends SketchPrimitive { export class Segment extends SketchPrimitive {
@ -115,6 +119,9 @@ export class Segment extends SketchPrimitive {
return this.a.minus(this.b); return this.a.minus(this.b);
} }
massiveness() {
return this.a.minus(this.b).length();
}
} }
export class Arc extends SketchPrimitive { export class Arc extends SketchPrimitive {
@ -192,6 +199,10 @@ export class Arc extends SketchPrimitive {
oci.point(underName + "_T2", A_TAN.x, A_TAN.y, A_TAN.z); oci.point(underName + "_T2", A_TAN.x, A_TAN.y, A_TAN.z);
oci.gcarc(underName, "cir", underName + "_A", underName + "_T1", underName + "_T2", underName + "_B") oci.gcarc(underName, "cir", underName + "_A", underName + "_T1", underName + "_T2", underName + "_B")
} }
massiveness() {
return this.a.minus(this.b).length();
}
} }
export class BezierCurve extends SketchPrimitive { export class BezierCurve extends SketchPrimitive {
@ -211,6 +222,10 @@ export class BezierCurve extends SketchPrimitive {
toVerbNurbs(tr) { toVerbNurbs(tr) {
return new verb.geom.BezierCurve([tr(this.a).data(), tr(this.cp1).data(), tr(this.cp2).data(), tr(this.b).data()], null); return new verb.geom.BezierCurve([tr(this.a).data(), tr(this.cp1).data(), tr(this.cp2).data(), tr(this.b).data()], null);
} }
massiveness() {
return this.a.minus(this.b).length();
}
} }
export class EllipticalArc extends SketchPrimitive { export class EllipticalArc extends SketchPrimitive {
@ -253,6 +268,10 @@ export class EllipticalArc extends SketchPrimitive {
return arc; return arc;
// return adjustEnds(arc, tr(this.a), tr(this.b)) // return adjustEnds(arc, tr(this.a), tr(this.b))
} }
massiveness() {
return Math.max(this.rx, this.ry);
}
} }
export class Circle extends SketchPrimitive { export class Circle extends SketchPrimitive {
@ -276,6 +295,10 @@ export class Circle extends SketchPrimitive {
const DIR = csys.z; const DIR = csys.z;
oci.circle(underName, ...C.data(), ...DIR.data(), this.r); oci.circle(underName, ...C.data(), ...DIR.data(), this.r);
} }
massiveness() {
return this.r;
}
} }
export class Ellipse extends SketchPrimitive { export class Ellipse extends SketchPrimitive {
@ -303,6 +326,10 @@ export class Ellipse extends SketchPrimitive {
return new verb.geom.Ellipse(tr(this.c).data(), tr(xAxis).data(), tr(yAxis).data()); return new verb.geom.Ellipse(tr(this.c).data(), tr(xAxis).data(), tr(yAxis).data());
} }
massiveness() {
return Math.max(this.rx, this.ry);
}
} }
export class Contour { export class Contour {