Skip to content

Commit 3b9ff99

Browse files
committed
bezier paths fix
1 parent f075a08 commit 3b9ff99

2 files changed

Lines changed: 12 additions & 6 deletions

File tree

src/components/AppMapDetailsObj.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -319,8 +319,10 @@ export default class AppMapDetailsObj extends AppMapDetailsBase<MapMarkerObj | M
319319
this.areaMarkers.forEach(m => m.remove());
320320
this.korokMarkers.forEach(m => m.remove());
321321
this.railMarkers.forEach(m => m.remove());
322+
this.railMarkers = []
322323
// Rails
323324
this.railLimits = {};
325+
this.rails = []
324326
this.updateColorScale();
325327
if (!this.staticData.persistentRailMarkers.length) {
326328
this.forgetColorScale();

src/util/curves.ts

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,14 +38,20 @@ function ptAdd(a: number[], b: number[]): number[] {
3838
// Curve construction is performed on all components [x,y,z]
3939
//
4040
function bezier(pts: any) {
41-
let steps = 36;
41+
let steps = 4;
4242
let out = [];
4343
let n = pts.length;
4444
if (n == 2) {
4545
return pts;
4646
}
47-
const coeff = bezierCoeff(n - 1);
47+
{
48+
let dx = pts[0][0] - pts.at(-1)[0]
49+
let dz = pts[0][0] - pts.at(-1)[0]
50+
let dist = Math.sqrt(dx * dx + dz * dz)
51+
steps = Math.max(steps, Math.floor(dist / 10) + 1)
52+
}
4853

54+
const coeff = bezierCoeff(n - 1);
4955
let t0 = 0;
5056
let dt = 1.0 / (steps - 1);
5157
let xi = pts.map((p: any) => p[0]);
@@ -54,10 +60,8 @@ function bezier(pts: any) {
5460
for (let k = 0; k < steps; k++) {
5561
const t = t0 + k * dt;
5662
const ti = range(n).map((i: number) => coeff[i] * Math.pow(1.0 - t, n - 1 - i) * Math.pow(t, i));
57-
for (let i = 0; i < n; i++) {
58-
let pt = [dot(ti, xi), dot(ti, yi), dot(ti, zi)];
59-
out.push(pt);
60-
}
63+
let pt = [dot(ti, xi), dot(ti, yi), dot(ti, zi)];
64+
out.push(pt);
6165
}
6266
return out;
6367
}

0 commit comments

Comments
 (0)