gz_waves: Gerstner backend - Part 2/4#883
Merged
Merged
Conversation
caguero
force-pushed
the
caguero/waves-02-gerstner
branch
5 times, most recently
from
June 22, 2026 17:16
3b09c80 to
bb957dc
Compare
caguero
force-pushed
the
caguero/waves-01-core
branch
from
June 25, 2026 21:32
9698e33 to
33bb4e8
Compare
…GUI registrar Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Signed-off-by: Carlos Aguero <caguero@honurobotics.com>
…leanup Drop Eigen in favor of gz::math vectors (matching the core interface), wire gz-math into the engine target, switch members to gz-style (this->member, no trailing underscore), and factor the per-component phase into a shared Phase() helper. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Signed-off-by: Carlos Agüero <caguero@honurobotics.com>
…uard Switch the engine's diagnostics from std::cerr to gzerr (wiring gz-common into the engine target), and reject a non-positive <period> in SetParameters — which would otherwise make omega=2*pi/period infinite and the PMS spectrum blow up — leaving the field flat instead. Adds a test. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Signed-off-by: Carlos Agüero <caguero@honurobotics.com>
caguero
force-pushed
the
caguero/waves-02-gerstner
branch
from
June 30, 2026 22:02
bb957dc to
2e79cc6
Compare
Drop the retired "backend" / "wave model" terms in comments and Doxygen in favour of "engine" / "wave field engine", matching the WavesSystemBase and WAVES_DESIGN.md vocabulary settled in the PR1 review. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Signed-off-by: Carlos Aguero <caguero@honurobotics.com>
Collaborator
|
This is great. Just a few notes for posterity:
|
bsb808
approved these changes
Jul 3, 2026
bsb808
left a comment
Collaborator
There was a problem hiding this comment.
LGTM — Part 2/4: the analytic Gerstner engine behind the new IWaveField interface.
… split Per bsb808's note on #883: the analytic Gerstner engine applies full Gerstner horizontal chop only in the render grid (Update/Field, for the shader); the point queries (Elevation/ParticleVelocity/Normal) that buoyancy reads use linear (Airy) vertical-only kinematics. Document this deliberate approximation in the class doc. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Signed-off-by: Carlos Aguero <caguero@honurobotics.com>
Collaborator
Author
Thanks, I added some notes in 3be0dcd |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This patch adds the first wave engine, the analytic Gerstner (sum-of-sines) backend. It depends only on the core; no FFT, no rendering, no EncinoWaves.
No on-screen waves yet
This PR adds the engine + source + GUI registrar, but the surface is drawn by
WaterVisual, which lands in PR3 (gz_waves_rendering). The first visible Gerstner waves appear once core + this engine + rendering are all in — i.e. at PR3. PR2 is exercised headless (its tests) and by theWavefieldcomponent it publishes.