Skip to content

dmnsgn/vector-field

Repository files navigation

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.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>

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.

About

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

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy