How to use the p5.Vector function in p5

To help you get started, we’ve selected a few p5 examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github winkerVSbecks / sketchbook / flocking.js View on Github external
function separate(boids, boid) {
  const [count, direction] = boids.reduce(
    ([count, direction], otherBoid) => {
      const d = boid.position.dist(otherBoid.position);
      if (d > 0 && d < CONFIG.desiredSeparation) {
        // Calculate vector pointing away from neighbour
        const diff = Vector.sub(boid.position, otherBoid.position)
          .normalize()
          .div(d); // Weight by distance
        return [count + 1, direction.add(diff)];
      }
      return [count, direction];
    },
    [0, new Vector(0, 0)],
  );

  return count > 0
    ? direction
        .div(count) // average
        .normalize()
        .mult(boid.maxSpeed)
        .sub(boid.velocity)
        .limit(boid.maxForce)
    : direction;
}
github winkerVSbecks / sketchbook / flocking.js View on Github external
function align(boids, boid) {
  const [count, direction] = boids.reduce(
    ([count, direction], otherBoid) => {
      const d = Vector.dist(boid.position, otherBoid.position);
      return d > 0 && d < CONFIG.neighbourDist
        ? [count + 1, direction.add(otherBoid.velocity)]
        : [count, direction];
    },
    [0, new Vector(0, 0)],
  );

  return count > 0
    ? direction
        .div(count)
        .normalize()
        .mult(boid.maxSpeed)
        .sub(boid.velocity)
        .limit(boid.maxForce)
    : direction;
}
github winkerVSbecks / sketchbook / flocking.js View on Github external
function boidOf(x, y) {
  return {
    acceleration: new Vector(0, 0),
    velocity: new Vector(Random.range(-1, 1), Random.range(-1, 1)),
    position: new Vector(x, y),
    r: Random.range(2, 4),
    maxSpeed: 3,
    maxForce: 0.05,
    trail: [],
    trailLength: Random.range(25, 60),
    color: Random.pick(warm),
  };
}
github winkerVSbecks / sketchbook / flocking.js View on Github external
function boidOf(x, y) {
  return {
    acceleration: new Vector(0, 0),
    velocity: new Vector(Random.range(-1, 1), Random.range(-1, 1)),
    position: new Vector(x, y),
    r: Random.range(2, 4),
    maxSpeed: 3,
    maxForce: 0.05,
    trail: [],
    trailLength: Random.range(25, 60),
    color: Random.pick(warm),
  };
}
github winkerVSbecks / sketchbook / flocking.js View on Github external
function cohesion(boids, boid) {
  const [count, direction] = boids.reduce(
    ([count, direction], otherBoid) => {
      const d = Vector.dist(boid.position, otherBoid.position);
      return d > 0 && d < CONFIG.neighbourDist
        ? [count + 1, direction.add(otherBoid.position)]
        : [count, direction];
    },
    [0, new Vector(0, 0)],
  );

  if (count > 0) {
    direction.div(count);
    return seek(direction, boid);
  } else {
    return direction;
  }
}
github winkerVSbecks / sketchbook / flocking.js View on Github external
function boidOf(x, y) {
  return {
    acceleration: new Vector(0, 0),
    velocity: new Vector(Random.range(-1, 1), Random.range(-1, 1)),
    position: new Vector(x, y),
    r: Random.range(2, 4),
    maxSpeed: 3,
    maxForce: 0.05,
    trail: [],
    trailLength: Random.range(25, 60),
    color: Random.pick(warm),
  };
}

p5

[![npm version](https://badge.fury.io/js/p5.svg)](https://www.npmjs.com/package/p5)

LGPL-2.1
Latest version published 25 days ago

Package Health Score

95 / 100
Full package analysis