Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

vector-field

dmnsgn44MIT2.1.3TypeScript support: included

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

vector-field, flow-field, 3d, flow, vectors, lookup, noise, perlin

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

changelog

Changelog

All notable changes to this project will be documented in this file. See commit-and-tag-version for commit guidelines.

2.1.3 (2024-07-07)

2.1.2 (2024-07-07)

2.1.1 (2023-10-01)

2.1.0 (2021-10-02)

Features

  • add exports field to package.json (5e7d772)

2.0.2 (2021-06-15)

2.0.1 (2021-04-16)

Bug Fixes

  • add sideEffects key to package.json (e9f655b)

2.0.0 (2021-04-15)

Code Refactoring

BREAKING CHANGES

  • switch to type module