HorseAcademy

Edulab: Golven

v0.0.20 — Foucault iCt Horse · edu · golven

Wateroppervlak (top-down)

🌸 Optie A — Coronet-ring

Bovenop dezelfde lineaire wave-equation een particle-ring van 16 witte deeltjes die na impact naar buiten + omhoog spatten met simpele "g".

Natuurgetrouw: ~30% — visueel herkenbaar als kroon-splash, maar losgekoppeld van de werkelijke water-fysica. Particles zijn pure decoratie.

💦 Optie B — Coronet + droplets

Coronet-ring (A) + 6 grotere droplet-sprites die ballistisch parabool-omhoog vliegen, op piek loskomen, en weer omlaag vallen.

Natuurgetrouw: ~50% — duidelijk herkenbare splash-vorm met "Plateau-Rayleigh-stijl" loskomende druppels, maar nog steeds zuiver visueel — geen fluid-sim.

🌐 Optie C — Boussinesq-stijl dispersie

Variant van wave-eq met hogere-orde Laplaciaan (4e-orde damping ≈ dispersie): kortere golven worden iets meer geremd dan lange, geeft realistischer "uit elkaar lopende" wave-packets — capillaire-zwaartekracht-mix.

Natuurgetrouw: ~60% fysisch (dispersie nu correcter modelleerd) — maar nog steeds geen splash, geen vrije rand, geen droplets.

🔥 Optie D — WebGL fluid-shader (PROOF-OF-CONCEPT)

Fragment-shader rendert een refractie-effect over het wave-veld: pixels schuiven volgens gradiënt van u(x,y), simuleert "kijken-door-water-look". Vereenvoudigde versie van wat een echte fluid-shader doet.

Natuurgetrouw: ~40% — geen Navier-Stokes-vloeistof; toont alleen optisch refractie-effect bovenop bestaande wave. Voor echte fluid-sim: zie tab 💧 E.

💧 Optie E — Echte fluid in 3D-camera (Bridson v0.0.10)

2D incompressible Navier-Stokes (Stam 1999): semi-Lagrangian advect + Jacobi pressure-solve + dye-tracking. Gerenderd in echte 3D-perspective via dezelfde sferische camera als 🎥 real 3D-tab — gebruik de Camera-sliders (yaw/pitch/afstand/pan).

Bediening:
• drag = camera roteren · shift+drag = fluid in beweging zetten · scroll = zoom
• Bal arm + klik in canvas = bal valt zichtbaar, drukt water in (negatieve dye-crater + downward velocity-impulse) → de fluid reageert echt op de bal

Natuurgetrouw: ~80-85% binnen 2D water-top-down + 3D-rendering. Niet: echte 3D-volume (water is platte heightmap), oppervlaktespanning, vrije rand, droplets, breakup.

Waarom geen 100% hier? Deze tab heeft 2D-sim + 3D-render. Voor échte 3D-volume zie tab 🌪 F.

🌪 Optie F — TRUE 3D volumetric fluid (Foster 1996)

Echte 3D Navier-Stokes op 32×24×18 voxels = 13.824 cellen. Self-advectie van velocity-veld (u,v,w) via 3D semi-Lagrangian backtrace + trilinear interpolation. Pressure-solve met 6-neighbour Jacobi (15 iters) — Foster's klassieke 1996 paper-approach. Render via point-cloud: per voxel met dye>0 een sphere met density-kleur, gesorteerd op camera-depth (painter's algorithm).

Bediening: drag = camera roteren · shift+drag = 3D force in midden-Z-slice · scroll = zoom · bal arm+klik = 3D-crater op midden van volume

Natuurgetrouw: ~88-92% — échte 3D-volume met wervels die door alle drie dimensies stromen, vortex-rings, divergentie-vrij. Niet aanwezig: oppervlaktespanning, free surface (geen lucht-water-grens), droplets/breakup. Voor 100% nodig: level-set surface tracking + FSI + GPU compute shaders.

Performance: CPU-sim 14K cells × 15 Jacobi-iters ≈ 200K ops/step + render ~varies. Op moderne laptop ~30fps; bij slow-mo (tijd-rate 0.5) hapert het soepeler.

● bron 1 ● bron 2 — fps t = 0
grid 320×240 CFL — klik op canvas = bron 1 verplaatsen · shift-klik = bron 2
diep ↓
↑ crest