code: function _viewportLineSeparatesTriangle (viewportAABB, triangle) {
      if (triangle[0].x < viewportAABB.minx &&
          triangle[1].x < viewportAABB.minx &&
          triangle[2].x < viewportAABB.minx) {
          return SEPARATING_LINE_FOUND;
      }
  
      if (triangle[0].y < viewportAABB.miny &&
          triangle[1].y < viewportAABB.miny &&
          triangle[2].y < viewportAABB.miny) {
          return SEPARATING_LINE_FOUND;
      }
  
      if (triangle[0].x > viewportAABB.maxx &&
          triangle[1].x > viewportAABB.maxx &&
          triangle[2].x > viewportAABB.maxx) {
          return SEPARATING_LINE_FOUND;
      }
  
      if (triangle[0].y > viewportAABB.maxy &&
          triangle[1].y > viewportAABB.maxy &&
          triangle[2].y > viewportAABB.maxy) {
          return SEPARATING_LINE_FOUND;
      }
  
      return SEPARATING_LINE_NOT_FOUND;
  }
docs: /*
  TODO
  
  Optimize triangle collision:
  
  function _isAnyViewportVertexInTriangle (triangle, viewport) {
  for (let i = 0; i < viewport.length; i++) {
  if (pointInTriangle(viewport[i], triangle[0], triangle[1], triangle[2])) {
  return true;
  }
  }
  
  return false;
  }
  function _isAnyTriangleVertexInViewport (triangle, viewportAABB) {
  for (let i = 0; i < 3; i++) {
  if (pointInRectangle(triangle[i], viewportAABB)) {
  return true;
  }
  }
  return false;
  }