setFromPoints method

AABB setFromPoints(
  1. List<Vec3> points, [
  2. Vec3? position,
  3. Quaternion? quaternion,
  4. num? skinSize,
])

Set the AABB bounds from a set of points. points An array of Vec3's. return The self object

Implementation

AABB setFromPoints(List<Vec3> points, [Vec3? position, Quaternion? quaternion, num? skinSize]){
  final l = lowerBound;
  final u = upperBound;
  final q = quaternion;

  // Set to the first point
  l.copy(points[0]);
  if (q != null) {
    q.vmult(l, l);
  }
  u.copy(l);

  for (int i = 1; i < points.length; i++) {
    Vec3 p = points[i];
    if (q != null) {
      q.vmult(p, _tmp);
      p = _tmp;
    }

    if (p.x > u.x) {
      u.x = p.x;
    }
    if (p.x < l.x) {
      l.x = p.x;
    }
    if (p.y > u.y) {
      u.y = p.y;
    }
    if (p.y < l.y) {
      l.y = p.y;
    }
    if (p.z > u.z) {
      u.z = p.z;
    }
    if (p.z < l.z) {
      l.z = p.z;
    }
  }

  // Add offset
  if (position != null) {
    position.vadd(l, l);
    position.vadd(u, u);
  }

  if (skinSize != null) {
    l.x -= skinSize;
    l.y -= skinSize;
    l.z -= skinSize;
    u.x += skinSize;
    u.y += skinSize;
    u.z += skinSize;
  }

  return this;
}