vector-field
v2.1.3
Published
A data structure and lookup for 3D vector fields (flow fields).
Downloads
23
Maintainers
Readme
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
Typedefs
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> |
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.