/** 
  * \brief Determine whether an edge intersects a face.
  * 
  * @param e The edge.
  * @param f The face.
  * 
  * @return true, if \a e and \a f intersect.
  */
 bool intersects(edge_t *e, face_t *f) {
   if (intersects(e->v1(), f) || intersects(e->v2(), f) || intersects(IObj(e), f)) return true;
   return false;
 }
 /** 
  * \brief Determine whether an edge intersects a face.
  * 
  * @param e The edge.
  * @param f The face.
  * 
  * @return true, if \a e and \a f intersect.
  */
 bool intersects(const carve::poly::Polyhedron::edge_t *e, const carve::poly::Polyhedron::face_t *f) {
   if (intersects(e->v1, f) || intersects(e->v2, f) || intersects(IObj(e), f)) return true;
   return false;
 }
 /** 
  * \brief Determine whether an edge intersects another edge.
  * 
  * @param e The edge.
  * @param f The face.
  * 
  * @return true, if \a e and \a f intersect.
  */
 bool intersects(edge_t *e1, edge_t *e2) {
   if (intersects(e1->v1(), e2) || intersects(e1->v2(), e2) || intersects(IObj(e1), e2)) return true;
   return false;
 }
 /** 
  * \brief Determine whether an edge intersects another edge.
  * 
  * @param e The edge.
  * @param f The face.
  * 
  * @return true, if \a e and \a f intersect.
  */
 bool intersects(const carve::poly::Polyhedron::edge_t *e1, const carve::poly::Polyhedron::edge_t *e2) {
   if (intersects(e1->v1, e2) || intersects(e1->v2, e2) || intersects(IObj(e1), e2)) return true;
   return false;
 }