Security News
Weekly Downloads Now Available in npm Package Search Results
Socket's package search now displays weekly downloads for npm packages, helping developers quickly assess popularity and make more informed decisions.
Work in progress!
This library is functional, although experimental, and has some performance issues.
npm install behaviours
1000 points repelling / attracting each other:
const Behaviours = require("behaviours");
const b = new Behaviours({ dimensions: 2 });
const simulationStep = b.compose(
b.repelOthers({
maxDistance: 0.001,
force: 0.002
}),
b.attractOthers({
minDistance: 0.001,
maxDistance: 0.003,
force: 0.001
}),
b.dampenVelocity({ dampening: 0.5 }),
b.addVelocity()
);
const points = Array.from({ length: 1000 }).map(() => ({
pos: [rand(-0.1, 0.1), rand(-0.1, 0.1)],
vel: [rand(-0.001, 0.001), rand(-0.001, 0.001)]
}));
const loop = () => {
simulationStep(points);
// draw points
requestAnimationFrame(loop);
}
loop();
const b = new Behaviours(options)
- creates new behaviours instanceoptions.dimensions
: 1
, 2
, 3
- how many dimensions the simulation is working againstoptions.getPos
- custom position getter (default o => o.pos
)options.getVel
- custom velocity getter (default o => o.vel
)b.addVelocity()
- add velocity to position with each frameb.limitVelocity(options)
- limit velocity of each point
options.limit
- max velocity (default 1.0
)b.repelOthers(options)
- float away from other points
options.minDistance
- min distance for collision (default 0.0
)options.maxDistance
- max distance for collision (default 0.5
)options.force
- force of collision (default 0.1
)b.repelPoint(options)
- repel from a custom point
options.minDistance
- min distance for collision (default 0.0
)options.maxDistance
- max distance for collision (default 0.5
)options.force
- force of collision (default 0.1
)options.position
- position of repelling point (default [0, 0, 0]
)b.attractOthers(options)
- float towards other points
options.minDistance
- min distance for attraction (default 0.0
)options.maxDistance
- max distance for attraction (default 0.5
)options.force
- force of attraction (default 0.1
)b.attractPoint(options)
- attract from a custom point
options.minDistance
- min distance for attraction (default 0.0
)options.maxDistance
- max distance for attraction (default 0.5
)options.force
- force of attraction (default 0.1
)options.position
- position of attracting point (default [0, 0, 0]
)b.collideOthers(options)
- collide with other points
options.minDistance
- min distance for collision (default 0.0
)options.maxDistance
- max distance for collision (default 0.5
)options.onCollision(p1, p2, points)
- custom function to run on collisionb.nearestOther(options)
- collide with other points
options.minDistance
- min distance for search (default 0.0
)options.maxDistance
- max distance for search (default 0.5
)options.onFound(p1, p2, points)
- custom function to run when nearest point is foundb.subset(options)
- filter points
options.condition(p)
- condition for given pointoptions.conditionOthers
- are subsequent operations compared against all other points, or all points matching options.condition
(default false
)b.compose(functions)
- compose all given behaviour functions into single simulation stepThis project was developed in part at Laboratory, an artist residency for interactive arts: https://laboratoryspokane.com.
FAQs
declarative library for describing behaviours
We found that behaviours demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Socket's package search now displays weekly downloads for npm packages, helping developers quickly assess popularity and make more informed decisions.
Security News
A Stanford study reveals 9.5% of engineers contribute almost nothing, costing tech $90B annually, with remote work fueling the rise of "ghost engineers."
Research
Security News
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.