vector-field

A data structure and lookup for 3D vector fields (flow fields).

Usage no npm install needed!

<script type="module">
  import vectorField from 'https://cdn.skypack.dev/vector-field';
</script>

README

vector-field

npm version stability-stable npm minzipped size dependencies types Conventional Commits styled with prettier linted with eslint license

A data structure and lookup for 3D vector fields (flow fields).

paypal coinbase twitter

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.sin(phi),
    Math.cos(theta),
    Math.sin(theta) * Math.cos(phi),
  ];
};
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>

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.