Skip to content

๐Ÿ“– Reference guide

Fields play a central role in the Helion library.

Field: sample(u, ,v, target)
โ”‚
โ”œโ”€ VectorField: sample(positionVector, target)
โ”‚
โ”œโ”€ Surface
โ”‚ โ”œโ”€ ParametricSurface
โ”‚ โ”‚ โ””โ”€ MultivariateFunctionSurface
โ”‚ โ”‚
โ”‚ โ”œโ”€ ComplexSurface
โ”‚ โ”œโ”€ DiscreteFieldSurface
โ”‚ โ””โ”€ ComplexSurface
โ”‚
โ”œโ”€ ScalarFieldOnSurface
โ”‚ โ”œโ”€ HeightScalarField
โ”‚ โ”œโ”€ MeanCurvatureField
โ”‚ โ”œโ”€ GaussianCurvatureField
โ”œโ”€ ...
โ”‚
โ””โ”€ DiscreteScalarField

MVC:

Simulation
updates solver
Solver
updates field
SurfaceView
samples field
numerics/
โ”œโ”€โ”€ solvers/
โ”‚ โ”œโ”€โ”€ JacobiSolver
โ”‚ โ”œโ”€โ”€ GaussSeidelSolver
โ”‚ โ”œโ”€โ”€ MultigridSolver
โ”‚ โ””โ”€โ”€ FiniteDifferenceWaveSolver
โ”‚
โ”œโ”€โ”€ operators/
โ”‚ โ”œโ”€โ”€ Laplacian2D
โ”‚ โ”œโ”€โ”€ Gradient2D
โ”‚ โ””โ”€โ”€ Divergence2D
โ”‚
โ”œโ”€โ”€ boundaryconditions/
โ”‚ โ”œโ”€โ”€ Dirichlet
โ”‚ โ”œโ”€โ”€ Neumann
โ”‚ โ””โ”€โ”€ Periodic
SurfaceView
โ†“
Surface.sample()
โ†“
ScalarField.scalarValueAt()
const field = new ScalarGridField(...);
const solver = new WaveEquationSolver({
field,
boundaryCondition: BoundaryCondition.Dirichlet
});
simulation.onClockTick((_, dt) => solver.step(dt));

In jouw architectuur (zoals je die nu gebruikt)

Je hebt 3 lagen:

  1. Physics layer Dipole, Particle, VectorField

โ†’ puur fysica in meters (of SI units)

  1. Simulation layer Simulation

โ†’ tijd, substeps, integratie

โ— hoort NIETS te weten over visual scale

  1. Render layer ThreeJsRenderer._world ArrowField2 Sphere etc.

โ†’ mapping physics โ†’ visuals

TODO

Surface
โ†“
ScalarField (ruwe waarde)
โ†“
NormalizedScalarField (altijd [0,1])
โ†“
ColorMapper (blind voor fysica)
โ†“
View (alleen rendering)
/**
* Scalar field on a surface.
* โ”‚
* โ”œโ”€โ”€ MeanCurvatureField
* โ”œโ”€โ”€ GaussianCurvatureField
* โ”œโ”€โ”€ PrincipalCurvatureField
* โ”œโ”€โ”€ GeodesicDistanceField
* โ”œโ”€โ”€ UserDefinedField
*/
export class SurfaceScalarField