38    explicit Extrusion(shared_ptr<ChildType> child, 
double length): 
BaseClass(child), length(length) {}
 
   40    explicit Extrusion(
double length = 0.0): length(length) {}
 
   44    std::string getTypeName() 
const override;
 
   54    bool contains(
const DVec& p) 
const override;
 
   63    Box fromChildCoords(
const typename ChildType::Box& 
child_bbox) 
const override;
 
   81    bool canBeInside(
const DVec& p)
 const { 
return 0.0 <= p.lon() && p.lon() <= length; }
 
   84    bool canIntersect(
const Box& 
area)
 const { 
return !(
area.lower.lon() > length || 
area.upper.lon() < 0.0); }
 
   91    static ChildVec childVec(
const DVec& p) { 
return ChildVec(
p.tran(), 
p.vert()); }
 
   98    static ChildBox childBox(
const Box& r) { 
return ChildBox(childVec(r.lower), childVec(r.upper)); }
 
  106    static DVec parentVec(
const ChildVec& p, 
double lon) { 
return DVec(lon, 
p.tran(), 
p.vert()); }
 
  113    Box parentBox(
const ChildBox& r)
 const { 
return Box(parentVec(r.lower, 0.0), parentVec(r.upper, length)); }
 
  115    void addPointsAlongToSet(std::set<double>& points,
 
  116                        Primitive<3>::Direction direction,
 
  118                        double min_step_size) 
const override;
 
  120    void addLineSegmentsToSet(std::set<
typename GeometryObjectD<3>::LineSegment>& segments,
 
  122                              double min_step_size) 
const override;