vector-field
vector-field copied to clipboard
A data structure and lookup for 3D vector fields (flow fields).
vector-field
A data structure and lookup for 3D vector fields (flow fields).

See the example and its source.
Installation
npm install vector-field
Usage
import VectorField from "vector-field";
let time = 0;
const directionFn = ([x, y, z]) => {
const n = myNoise4D(x, y, z, time);
const theta = n;
const phi = n;
return [
Math.sin(theta) * Math.cos(phi),
Math.sin(theta) * Math.sin(phi),
Math.cos(theta),
];
};
const vectorField = new VectorField(directionFn, [12, 6, 6], 1);
const frame = () => {
time += 0.001;
vectorField.update();
requestAnimationFrame(frame);
};
requestAnimationFrame(() => {
frame();
});
API
Classes
- VectorField
A data structure and lookup for 3D vector fields (flow fields).
Typedefs
- vec3 :
Array.<number> - VectorFieldCell :
object - VectorFieldDirectionFn :
function The custom function to compute the cell direction (often a noise function)
VectorField
A data structure and lookup for 3D vector fields (flow fields).
Kind: global class Properties
| Name | Type |
|---|---|
| directionFn | VectorFieldDirectionFn |
| steps | vec3 |
| bounds | vec3 |
| halfBounds | vec3 |
| field | Array.<VectorFieldCell> |
- VectorField
- new VectorField(directionFn, [steps], [bounds])
- .update()
- .lookup(cell) ⇒
VectorFieldCell|undefined
new VectorField(directionFn, [steps], [bounds])
Creates an instance of VectorField.
| Param | Type | Default | Description |
|---|---|---|---|
| directionFn | VectorFieldDirectionFn |
The custom function to compute the cell direction (often a noise function) | |
| [steps] | number | vec3 |
10 |
The number of steps on each dimension (all positive integer). Use integer for identical dimensions. |
| [bounds] | number | vec3 |
1 |
The size of a containing box for the field. Is divided into steps for each dimension (all positive). Use integer for identical dimensions. |
vectorField.update()
Create/update the field according to the provided noise function.
Kind: instance method of VectorField
vectorField.lookup(cell) ⇒ VectorFieldCell | undefined
Find a VectorFieldCell at specified position. Useful to compute a particle's velocity for instance.
Kind: instance method of VectorField
| Param | Type | Description |
|---|---|---|
| cell | vec3 |
[cx, cy, cz] |
vec3 : Array.<number>
Kind: global typedef
VectorFieldCell : object
Kind: global typedef Properties
| Name | Type |
|---|---|
| position | vec3 |
| direction | vec3 |
VectorFieldDirectionFn : function
The custom function to compute the cell direction (often a noise function)
Kind: global typedef
| Param | Type |
|---|---|
| position | vec3 |
| stepPosition | vec3 |
License
MIT. See license file.