double intersectsWithAabb3(Aabb3 other)

Return the distance from the origin of this to the intersection with other if this intersects with other, or null if the don't intersect.

Source

double intersectsWithAabb3(Aabb3 other) {
  final otherMin = other.min;
  final otherMax = other.max;

  var tNear = -double.MAX_FINITE;
  var tFar = double.MAX_FINITE;

  for (var i = 0; i < 3; ++i) {
    if (_direction[i] == 0.0) {
      if (_origin[i] < otherMin[i] || _origin[i] > otherMax[i]) {
        return null;
      }
    } else {
      var t1 = (otherMin[i] - _origin[i]) / _direction[i];
      var t2 = (otherMax[i] - _origin[i]) / _direction[i];

      if (t1 > t2) {
        final temp = t1;
        t1 = t2;
        t2 = temp;
      }

      if (t1 > tNear) {
        tNear = t1;
      }

      if (t2 < tFar) {
        tFar = t2;
      }

      if (tNear > tFar || tFar < 0) {
        return null;
      }
    }
  }

  return tNear;
}