@@ -17,24 +17,24 @@ export const tileToBBOX = (tile: [x: number, y: number, z: number]) => {
17
17
return [ w , s , e , n ] ;
18
18
} ;
19
19
20
- // const interpolateLinear = (
21
- // data: Float32Array<ArrayBufferLike> ,
22
- // index : number,
23
- // xFraction : number,
24
- // yFraction : number,
25
- // nx : number
26
- // ): number => {
27
- // const p0 = data [index];
28
- // const p1 = data [index + 1];
29
- // const p2 = data [index + nx];
30
- // const p3 = data [index + 1 + nx];
31
- // return (
32
- // p0 * (1 - xFraction) * (1 - yFraction) +
33
- // p1 * xFraction * (1 - yFraction) +
34
- // p2 * (1 - xFraction) * yFraction +
35
- // p3 * xFraction * yFraction
36
- // );
37
- // };
20
+ export const interpolateLinear = (
21
+ values : TypedArray ,
22
+ nx : number ,
23
+ index : number ,
24
+ xFraction : number ,
25
+ yFraction : number
26
+ ) : number => {
27
+ const p0 = values [ index ] ;
28
+ const p1 = values [ index + 1 ] ;
29
+ const p2 = values [ index + nx ] ;
30
+ const p3 = values [ index + 1 + nx ] ;
31
+ return (
32
+ p0 * ( 1 - xFraction ) * ( 1 - yFraction ) +
33
+ p1 * xFraction * ( 1 - yFraction ) +
34
+ p2 * ( 1 - xFraction ) * yFraction +
35
+ p3 * xFraction * yFraction
36
+ ) ;
37
+ } ;
38
38
39
39
export const hermite = ( t : number , p0 : number , p1 : number , m0 : number , m1 : number ) => {
40
40
const t2 = t * t ;
@@ -53,7 +53,7 @@ export const getDerivative = (fPrev: number, fNext: number) => {
53
53
} ;
54
54
55
55
export const interpolate2DHermite = (
56
- data : TypedArray ,
56
+ values : TypedArray ,
57
57
nx : number ,
58
58
index : number ,
59
59
xFraction : number ,
@@ -75,29 +75,29 @@ export const interpolate2DHermite = (
75
75
}
76
76
// tension = 0 is Hermite with Catmull-Rom. Tension = 1 is bilinear interpolation
77
77
// 0.5 is somewhat in the middle
78
- return interpolateCardinal2D ( data , nx , index , xFraction , yFraction , 0.3 ) ;
79
- //return interpolateRBF3x3(data , nx, index, xFraction, yFraction)
80
- //return interpolateRBF4x4(data , nx, index, xFraction, yFraction)
81
- //return interpolateSmoothBilinear(data , index, xFraction, yFraction, nx)
82
- //return interpolateMonotonicHermite(data , nx, index, xFraction, yFraction)
83
- //return interpolateGaussianBilinear(data , index, xFraction, yFraction, nx)
84
- //return interpolateLinear(data , index, xFraction, yFraction, nx)
85
- //return quinticHermite2D(data , nx, index, xFraction, yFraction)
78
+ return interpolateCardinal2D ( values , nx , index , xFraction , yFraction , 0.3 ) ;
79
+ //return interpolateRBF3x3(values , nx, index, xFraction, yFraction)
80
+ //return interpolateRBF4x4(values , nx, index, xFraction, yFraction)
81
+ //return interpolateSmoothBilinear(values , index, xFraction, yFraction, nx)
82
+ //return interpolateMonotonicHermite(values , nx, index, xFraction, yFraction)
83
+ //return interpolateGaussianBilinear(values , index, xFraction, yFraction, nx)
84
+ //return interpolateLinear(values , index, xFraction, yFraction, nx)
85
+ //return quinticHermite2D(values , nx, index, xFraction, yFraction)
86
86
87
87
/*let x = index % nx;
88
88
let y = index / nx;
89
- let ny = data .length / nx;
89
+ let ny = values .length / nx;
90
90
if (x <= 1 || y <= 1 || x >= nx - 3 || y >= ny - 3) {
91
- return interpolateLinear(data , index, xFraction, yFraction, nx);
91
+ return interpolateLinear(values , index, xFraction, yFraction, nx);
92
92
}
93
93
94
94
// Interpolate along X for each of the 4 rows
95
95
const interpRow = [];
96
96
for (let j = -1; j < 3; j++) {
97
- const p0 = data [index + j * nx];
98
- const p1 = data [index + j * nx + 1];
99
- const m0 = getDerivative(data [index + j * nx - 1], data [index + j * nx + 1]);
100
- const m1 = getDerivative(data [index + j * nx + 0], data [index + j * nx + 2]);
97
+ const p0 = values [index + j * nx];
98
+ const p1 = values [index + j * nx + 1];
99
+ const m0 = getDerivative(values [index + j * nx - 1], values [index + j * nx + 1]);
100
+ const m1 = getDerivative(values [index + j * nx + 0], values [index + j * nx + 2]);
101
101
interpRow[j + 1] = hermite(xFraction, p0, p1, m0, m1);
102
102
}
103
103
@@ -146,7 +146,7 @@ export const secondDerivative = (fm1: number, f0: number, fp1: number): number =
146
146
147
147
// 2D Quintic Hermite Interpolation on a 6x6 or larger grid
148
148
export const quinticHermite2D = (
149
- data : Float32Array < ArrayBufferLike > ,
149
+ values : Float32Array < ArrayBufferLike > ,
150
150
nx : number ,
151
151
index : number ,
152
152
xFraction : number ,
@@ -156,12 +156,12 @@ export const quinticHermite2D = (
156
156
const colValues = [ ] ;
157
157
158
158
for ( let j = - 2 ; j <= 3 ; j ++ ) {
159
- const f0 = data [ index + j * nx ] ;
160
- const f1 = data [ index + j * nx + 1 ] ;
161
- const m0 = derivative ( data [ index + j * nx - 1 ] , data [ index + j * nx + 1 ] ) ;
162
- const m1 = derivative ( data [ index + j * nx ] , data [ index + j * nx + 2 ] ) ;
163
- const c0 = secondDerivative ( data [ index + j * nx - 1 ] , f0 , f1 ) ;
164
- const c1 = secondDerivative ( f0 , f1 , data [ index + j * nx + 2 ] ) ;
159
+ const f0 = values [ index + j * nx ] ;
160
+ const f1 = values [ index + j * nx + 1 ] ;
161
+ const m0 = derivative ( values [ index + j * nx - 1 ] , values [ index + j * nx + 1 ] ) ;
162
+ const m1 = derivative ( values [ index + j * nx ] , values [ index + j * nx + 2 ] ) ;
163
+ const c0 = secondDerivative ( values [ index + j * nx - 1 ] , f0 , f1 ) ;
164
+ const c1 = secondDerivative ( f0 , f1 , values [ index + j * nx + 2 ] ) ;
165
165
166
166
const interpolatedX = quinticHermite ( xFraction , f0 , f1 , m0 , m1 , c0 , c1 ) ;
167
167
colValues . push ( interpolatedX ) ;
@@ -222,7 +222,7 @@ const cardinalSpline = (
222
222
} ;
223
223
224
224
const interpolateCardinal2D = (
225
- data : TypedArray ,
225
+ values : TypedArray ,
226
226
nx : number ,
227
227
index : number ,
228
228
xFraction : number ,
@@ -232,34 +232,34 @@ const interpolateCardinal2D = (
232
232
// Interpolate 4 rows in X
233
233
const r0 = cardinalSpline (
234
234
xFraction ,
235
- data [ index + - 1 * nx - 1 ] ,
236
- data [ index + - 1 * nx + 0 ] ,
237
- data [ index + - 1 * nx + 1 ] ,
238
- data [ index + - 1 * nx + 2 ] ,
235
+ values [ index + - 1 * nx - 1 ] ,
236
+ values [ index + - 1 * nx + 0 ] ,
237
+ values [ index + - 1 * nx + 1 ] ,
238
+ values [ index + - 1 * nx + 2 ] ,
239
239
tension
240
240
) ;
241
241
const r1 = cardinalSpline (
242
242
xFraction ,
243
- data [ index + + 0 * nx - 1 ] ,
244
- data [ index + + 0 * nx + 0 ] ,
245
- data [ index + + 0 * nx + 1 ] ,
246
- data [ index + + 0 * nx + 2 ] ,
243
+ values [ index + + 0 * nx - 1 ] ,
244
+ values [ index + + 0 * nx + 0 ] ,
245
+ values [ index + + 0 * nx + 1 ] ,
246
+ values [ index + + 0 * nx + 2 ] ,
247
247
tension
248
248
) ;
249
249
const r2 = cardinalSpline (
250
250
xFraction ,
251
- data [ index + + 1 * nx - 1 ] ,
252
- data [ index + + 1 * nx + 0 ] ,
253
- data [ index + + 1 * nx + 1 ] ,
254
- data [ index + + 1 * nx + 2 ] ,
251
+ values [ index + + 1 * nx - 1 ] ,
252
+ values [ index + + 1 * nx + 0 ] ,
253
+ values [ index + + 1 * nx + 1 ] ,
254
+ values [ index + + 1 * nx + 2 ] ,
255
255
tension
256
256
) ;
257
257
const r3 = cardinalSpline (
258
258
xFraction ,
259
- data [ index + + 2 * nx - 1 ] ,
260
- data [ index + + 2 * nx + 0 ] ,
261
- data [ index + + 2 * nx + 1 ] ,
262
- data [ index + + 2 * nx + 2 ] ,
259
+ values [ index + + 2 * nx - 1 ] ,
260
+ values [ index + + 2 * nx + 0 ] ,
261
+ values [ index + + 2 * nx + 1 ] ,
262
+ values [ index + + 2 * nx + 2 ] ,
263
263
tension
264
264
) ;
265
265
@@ -276,7 +276,7 @@ export const radiansToDegrees = (rad: number) => {
276
276
} ;
277
277
278
278
// const interpolateRBF4x4 = (
279
- // data : Float32Array | (Float32Array & ArrayBufferLike),
279
+ // values : Float32Array | (Float32Array & ArrayBufferLike),
280
280
// nx: number,
281
281
// index: number,
282
282
// xFraction: number,
@@ -285,7 +285,7 @@ export const radiansToDegrees = (rad: number) => {
285
285
// const sigma = 0.65;
286
286
// const denom = 2 * sigma * sigma;
287
287
288
- // const ny = data .length / nx;
288
+ // const ny = values .length / nx;
289
289
// const x = (index % nx) + xFraction;
290
290
// const y = Math.floor(index / nx) + yFraction;
291
291
@@ -308,7 +308,7 @@ export const radiansToDegrees = (rad: number) => {
308
308
// const weight = Math.exp(-dist2 / denom);
309
309
310
310
// const sampleIndex = py * nx + px;
311
- // const value = data [sampleIndex];
311
+ // const value = values [sampleIndex];
312
312
313
313
// sum += value * weight;
314
314
// weightSum += weight;
@@ -319,7 +319,7 @@ export const radiansToDegrees = (rad: number) => {
319
319
// };
320
320
321
321
// const interpolateRBF3x3 = (
322
- // data : Float32Array | (Float32Array & ArrayBufferLike),
322
+ // values : Float32Array | (Float32Array & ArrayBufferLike),
323
323
// nx: number,
324
324
// index: number,
325
325
// xFraction: number,
@@ -328,7 +328,7 @@ export const radiansToDegrees = (rad: number) => {
328
328
// const sigma = 0.4;
329
329
// const denom = 2 * sigma * sigma;
330
330
331
- // const ny = data .length / nx;
331
+ // const ny = values .length / nx;
332
332
// const x = (index % nx) + xFraction;
333
333
// const y = Math.floor(index / nx) + yFraction;
334
334
@@ -351,7 +351,7 @@ export const radiansToDegrees = (rad: number) => {
351
351
// const weight = Math.exp(-dist2 / denom);
352
352
353
353
// const sampleIndex = py * nx + px;
354
- // const value = data [sampleIndex];
354
+ // const value = values [sampleIndex];
355
355
356
356
// sum += value * weight;
357
357
// weightSum += weight;
0 commit comments