mirror of
https://github.com/xibyte/jsketcher
synced 2025-12-06 16:33:15 +01:00
calculating tesselation scale
This commit is contained in:
parent
38cffa5e6c
commit
bb234a7c57
2 changed files with 34 additions and 2 deletions
|
|
@ -4,7 +4,12 @@ export class SketchObjectView extends CurveBasedView {
|
|||
|
||||
constructor(ctx, mSketchObject, sketchToWorldTransformation) {
|
||||
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);
|
||||
this.representation.onDblclick = () => {
|
||||
ctx.sketcherService.sketchFace(this.model.face);
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ export class SketchPrimitive {
|
|||
}
|
||||
|
||||
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) );
|
||||
|
||||
// const tessellation = this.tessellateImpl(resolution);
|
||||
|
|
@ -67,6 +67,10 @@ export class SketchPrimitive {
|
|||
toOCCGeometry(oci: OCCCommandInterface, underName: string, csys: CSys) {
|
||||
throw 'not implemented'
|
||||
}
|
||||
|
||||
massiveness() {
|
||||
return 50;
|
||||
}
|
||||
}
|
||||
|
||||
export class Segment extends SketchPrimitive {
|
||||
|
|
@ -115,6 +119,9 @@ export class Segment extends SketchPrimitive {
|
|||
return this.a.minus(this.b);
|
||||
}
|
||||
|
||||
massiveness() {
|
||||
return this.a.minus(this.b).length();
|
||||
}
|
||||
}
|
||||
|
||||
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.gcarc(underName, "cir", underName + "_A", underName + "_T1", underName + "_T2", underName + "_B")
|
||||
}
|
||||
|
||||
massiveness() {
|
||||
return this.a.minus(this.b).length();
|
||||
}
|
||||
}
|
||||
|
||||
export class BezierCurve extends SketchPrimitive {
|
||||
|
|
@ -211,6 +222,10 @@ export class BezierCurve extends SketchPrimitive {
|
|||
toVerbNurbs(tr) {
|
||||
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 {
|
||||
|
|
@ -253,6 +268,10 @@ export class EllipticalArc extends SketchPrimitive {
|
|||
return arc;
|
||||
// return adjustEnds(arc, tr(this.a), tr(this.b))
|
||||
}
|
||||
|
||||
massiveness() {
|
||||
return Math.max(this.rx, this.ry);
|
||||
}
|
||||
}
|
||||
|
||||
export class Circle extends SketchPrimitive {
|
||||
|
|
@ -276,6 +295,10 @@ export class Circle extends SketchPrimitive {
|
|||
const DIR = csys.z;
|
||||
oci.circle(underName, ...C.data(), ...DIR.data(), this.r);
|
||||
}
|
||||
|
||||
massiveness() {
|
||||
return this.r;
|
||||
}
|
||||
}
|
||||
|
||||
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());
|
||||
}
|
||||
|
||||
massiveness() {
|
||||
return Math.max(this.rx, this.ry);
|
||||
}
|
||||
}
|
||||
|
||||
export class Contour {
|
||||
|
|
|
|||
Loading…
Reference in a new issue