Implementation for velocity averaging on the surface of a shell.
Fixes #292 (closed).
Includes:
- New method in the PlateVelocityProvider to compute average velocities.
- The LocalAveragingPointWeightProvider interface has been added to flexibly implement new rules for point locations and weights.
- Providing two simple implementations for the interface (uniform circles and the Fibonacci sequence both with Gaussian weighting).
- Added small app to visualize the points and weights on the sphere.
- Quickly replaced the velocity computation in the demo app.
Still requires testing/discussion/cleanup/optimization/etc.
Some notes:
- On my machine: with around 7 sample points (center + circle with 6 points) there is only a little performance difference compared to the previous implementation (about 10-20% increase in run time for the plate velocity computation in one test case). With 20 points the run time roughly doubles.
Example 1: UniformCirclesPointWeightProvider
(created with app PlateAveragingPointsAndWeights
):
Example 2: FibonacciLatticePointWeightProvider
(created with app PlateAveragingPointsAndWeights
):
Comparison of averages around plates moving in similar directions (color: velocity magnitude, arrows: velocity)
Before (always averaging to 0):
After (with UniformCirclesPointWeightProvider
):
Edited by Marcus Mohr