|
341 | 341 | $effect(() => (surfaceMesh.visible = graphVisible)); |
342 | 342 |
|
343 | 343 | const updateSurface = function () { |
344 | | - // const { a, b, c, d } = params; |
345 | | - // const A = math.parse(a).evaluate(); |
346 | | - // const B = math.parse(b).evaluate(); |
347 | | -
|
348 | | - // const C = math.parse(c); |
349 | | - // const D = math.parse(d); |
350 | | -
|
351 | 344 | const geometry = new ParametricGeometry( |
352 | 345 | (u, v, vec) => { |
353 | 346 | const U = A + (B - A) * u; |
|
427 | 420 | const dx = (B - A) / lcm(nX, cNum); |
428 | 421 | const points = []; |
429 | 422 |
|
430 | | - for (let u = A; u <= B; u += du) { |
| 423 | + for (let i = 0; i <= rNum; i++) { |
| 424 | + const u = A + i * du; |
431 | 425 | const cU = C(u); |
432 | 426 | const dU = D(u); |
433 | 427 |
|
|
436 | 430 | // args.y = cU; |
437 | 431 |
|
438 | 432 | points.push(new THREE.Vector3(u, cU, func(u, cU, tVal))); |
439 | | - for (let v = cU + dy; v < dU; v += dy) { |
| 433 | + for (let j = 1; j < lcm(nX, rNum); j++) { |
| 434 | + const v = cU + j * dy; |
440 | 435 | // args.y = v; |
441 | 436 | points.push(new THREE.Vector3(u, v, func(u, v, tVal))); |
442 | 437 | points.push(new THREE.Vector3(u, v, func(u, v, tVal))); |
|
449 | 444 | // args.x = A; |
450 | 445 | cMin = C(A); |
451 | 446 | dMax = D(A); |
452 | | - for (let u = A + dx; u <= B; u += dx) { |
| 447 | + for (let i = 1; i <= lcm(nX, cNum); i++) { |
| 448 | + const u = A + i * dx; |
453 | 449 | // args.x = u; |
454 | 450 | cMin = Math.min(cMin, C(u)); |
455 | 451 | dMax = Math.max(dMax, D(u)); |
456 | 452 | } |
457 | 453 |
|
458 | | - for (let v = cMin; v <= dMax; v += (dMax - cMin) / cNum) { |
| 454 | + const dv = (dMax - cMin) / cNum; |
| 455 | + for (let j = 0; j <= cNum; j++) { |
| 456 | + const v = cMin + j * dv; |
459 | 457 | const zs = marchingSegments( |
460 | 458 | (x) => (C(x) - v) * (v - D(x)), |
461 | 459 | A, |
|
509 | 507 | }; |
510 | 508 |
|
511 | 509 | function integrateSurface(n = 20) { |
| 510 | + // console.log('integrating...'); |
512 | 511 | return gaussLegendre( |
513 | 512 | (x) => gaussLegendre((y) => func(x, y, tVal), C(x), D(x), n), |
514 | 513 | A, |
|
847 | 846 | boxMesh.add(boxMeshEdges); |
848 | 847 |
|
849 | 848 | const updateBoxes = function () { |
850 | | - // const { a, b, c, d } = params; |
851 | | - // try { |
852 | | - // [ |
853 | | - // math.evaluate(a), |
854 | | - // math.evaluate(b), |
855 | | - // math.evaluate(c), |
856 | | - // math.evaluate(d), |
857 | | - // ]; |
858 | | - // } catch (e) { |
859 | | - // console.error("Can't show integral boxes on nonconstant bounds", e); |
860 | | - // return; |
861 | | - // } |
862 | | -
|
863 | | - // const [A, B, C, D] = [ |
864 | | - // math.evaluate(a), |
865 | | - // math.evaluate(b), |
866 | | - // math.evaluate(c), |
867 | | - // math.evaluate(d), |
868 | | - // ]; |
869 | | -
|
870 | | - // const t = T0 + tau * (T1 - T0); |
871 | | -
|
872 | 849 | if (boxMesh.geometry) { |
873 | 850 | boxMesh.geometry.dispose(); |
874 | 851 | boxMeshEdges.geometry.dispose(); |
|
0 commit comments