Skip to content

eulerjs API / @eulerjs/marine / SumOfSines

SumOfSines ​

Defined in: packages/marine/src/waves/SumOfSines.ts:85

An ocean surface made of peaked sinusoids (Acerola's "sum of sines" with exponential waves). Each wave's coordinates are pushed sideways by the slope of the waves before it, which sharpens crests and makes the surface move horizontally, like Gerstner waves.

The surface is a pure function of position and time, so physics and rendering agree as long as both are given the same time.

Constructors ​

Constructor ​

ts
new SumOfSines(options?): SumOfSines;

Defined in: packages/marine/src/waves/SumOfSines.ts:109

Parameters ​

ParameterType
options?SumOfSinesOptions

Returns ​

SumOfSines

Properties ​

PropertyModifierTypeDescriptionDefined in
fullSamplesPerPeriodreadonlynumber-packages/marine/src/waves/SumOfSines.ts:93
inversionIterationsreadonlynumber-packages/marine/src/waves/SumOfSines.ts:94
lastGridPointreadonlyobjectUndisplaced grid point found by the last heightAt or heightFrom call.packages/marine/src/waves/SumOfSines.ts:107
lastGridPoint.xpublicnumber-packages/marine/src/waves/SumOfSines.ts:107
lastGridPoint.zpublicnumber-packages/marine/src/waves/SumOfSines.ts:107
minSamplesPerPeriodreadonlynumber-packages/marine/src/waves/SumOfSines.ts:92
peakOffsetreadonlynumber-packages/marine/src/waves/SumOfSines.ts:88
peakSharpnessreadonlynumber-packages/marine/src/waves/SumOfSines.ts:87
sampleSpacingreadonlynumber-packages/marine/src/waves/SumOfSines.ts:91
timeOffsetreadonlynumber-packages/marine/src/waves/SumOfSines.ts:89
timeScalereadonlynumber-packages/marine/src/waves/SumOfSines.ts:90
wavesreadonlyreadonly WaveComponent[]-packages/marine/src/waves/SumOfSines.ts:86
waveShapeMeanreadonlynumberAverage of exp(peakSharpness sin(t) - peakOffset) over a period; subtracted so the mean sea level is 0.packages/marine/src/waves/SumOfSines.ts:96

Methods ​

heightAt() ​

ts
heightAt(
   worldX, 
   worldZ, 
   time
): number;

Defined in: packages/marine/src/waves/SumOfSines.ts:171

Height of the surface directly above or below the world position (worldX, worldZ) at time.

Parameters ​

ParameterType
worldXnumber
worldZnumber
timenumber

Returns ​

number


heightFrom() ​

ts
heightFrom(
   worldX, 
   worldZ, 
   time, 
   startGridX, 
   startGridZ, 
   iterations
): number;

Defined in: packages/marine/src/waves/SumOfSines.ts:180

Like heightAt, but starts the search for the undisplaced grid point at (startGridX, startGridZ) and runs iterations steps. A good start, such as the answer for the same point a moment ago, needs a single iteration. The grid point found is left in lastGridPoint.

Parameters ​

ParameterType
worldXnumber
worldZnumber
timenumber
startGridXnumber
startGridZnumber
iterationsnumber

Returns ​

number


normalAt() ​

ts
normalAt(
   worldX, 
   worldZ, 
   time, 
   target?
): Vector3;

Defined in: packages/marine/src/waves/SumOfSines.ts:197

Upward unit normal of the surface at the world position (worldX, worldZ), by central differences.

Parameters ​

ParameterType
worldXnumber
worldZnumber
timenumber
target?Vector3

Returns ​

Vector3


phaseTime() ​

ts
phaseTime(time): number;

Defined in: packages/marine/src/waves/SumOfSines.ts:140

Time the waves are evaluated at for a given simulation time.

Parameters ​

ParameterType
timenumber

Returns ​

number


resolvability() ​

ts
resolvability(index, spacing): number;

Defined in: packages/marine/src/waves/SumOfSines.ts:148

How much of wave index a grid with this sample spacing can show without aliasing, from 0 (fewer than minSamplesPerPeriod samples per period) to 1 (at least fullSamplesPerPeriod).

Parameters ​

ParameterType
indexnumber
spacingnumber

Returns ​

number


riseRate() ​

ts
riseRate(
   gridX, 
   gridZ, 
   time
): number;

Defined in: packages/marine/src/waves/SumOfSines.ts:163

Parameters ​

ParameterType
gridXnumber
gridZnumber
timenumber

Returns ​

number


surfacePoint() ​

ts
surfacePoint(
   gridX, 
   gridZ, 
   time, 
   target?
): Vector3;

Defined in: packages/marine/src/waves/SumOfSines.ts:157

Where the surface point that started at grid position (gridX, gridZ) is at time. The returned point is displaced sideways as well as vertically.

Parameters ​

ParameterType
gridXnumber
gridZnumber
timenumber
target?Vector3

Returns ​

Vector3

Released under the MIT License.