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
new SumOfSines(options?): SumOfSines;Defined in: packages/marine/src/waves/SumOfSines.ts:109
Parameters
| Parameter | Type |
|---|---|
options? | SumOfSinesOptions |
Returns
SumOfSines
Properties
| Property | Modifier | Type | Description | Defined in |
|---|---|---|---|---|
fullSamplesPerPeriod | readonly | number | - | packages/marine/src/waves/SumOfSines.ts:93 |
inversionIterations | readonly | number | - | packages/marine/src/waves/SumOfSines.ts:94 |
lastGridPoint | readonly | object | Undisplaced grid point found by the last heightAt or heightFrom call. | packages/marine/src/waves/SumOfSines.ts:107 |
lastGridPoint.x | public | number | - | packages/marine/src/waves/SumOfSines.ts:107 |
lastGridPoint.z | public | number | - | packages/marine/src/waves/SumOfSines.ts:107 |
minSamplesPerPeriod | readonly | number | - | packages/marine/src/waves/SumOfSines.ts:92 |
peakOffset | readonly | number | - | packages/marine/src/waves/SumOfSines.ts:88 |
peakSharpness | readonly | number | - | packages/marine/src/waves/SumOfSines.ts:87 |
sampleSpacing | readonly | number | - | packages/marine/src/waves/SumOfSines.ts:91 |
timeOffset | readonly | number | - | packages/marine/src/waves/SumOfSines.ts:89 |
timeScale | readonly | number | - | packages/marine/src/waves/SumOfSines.ts:90 |
waves | readonly | readonly WaveComponent[] | - | packages/marine/src/waves/SumOfSines.ts:86 |
waveShapeMean | readonly | number | Average 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()
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
| Parameter | Type |
|---|---|
worldX | number |
worldZ | number |
time | number |
Returns
number
heightFrom()
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
| Parameter | Type |
|---|---|
worldX | number |
worldZ | number |
time | number |
startGridX | number |
startGridZ | number |
iterations | number |
Returns
number
normalAt()
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
| Parameter | Type |
|---|---|
worldX | number |
worldZ | number |
time | number |
target? | Vector3 |
Returns
Vector3
phaseTime()
phaseTime(time): number;Defined in: packages/marine/src/waves/SumOfSines.ts:140
Time the waves are evaluated at for a given simulation time.
Parameters
| Parameter | Type |
|---|---|
time | number |
Returns
number
resolvability()
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
| Parameter | Type |
|---|---|
index | number |
spacing | number |
Returns
number
riseRate()
riseRate(
gridX,
gridZ,
time
): number;Defined in: packages/marine/src/waves/SumOfSines.ts:163
Parameters
| Parameter | Type |
|---|---|
gridX | number |
gridZ | number |
time | number |
Returns
number
surfacePoint()
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
| Parameter | Type |
|---|---|
gridX | number |
gridZ | number |
time | number |
target? | Vector3 |
Returns
Vector3
