Changes in src/Shapes/Shape_impl.hpp [e09b70:c6f395]
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/Shapes/Shape_impl.hpp
re09b70 rc6f395 10 10 11 11 #include "Shapes/Shape.hpp" 12 #include "vector.hpp" 13 #include "Line.hpp" 14 #include "LineSegment.hpp" 15 #include "LineSegmentSet.hpp" 16 12 17 13 18 class Shape_impl { … … 16 21 virtual ~Shape_impl(){}; 17 22 virtual bool isInside(const Vector &point)=0; 23 virtual bool isOnSurface(const Vector &point)=0; 24 virtual Vector getNormal(const Vector &point) throw(NotOnSurfaceException)=0; 25 virtual LineSegmentSet getLineIntersections(const Line&)=0; 26 virtual std::string toString()=0; 18 27 }; 19 28 … … 23 32 return true; 24 33 } 34 virtual bool isOnSurface(const Vector &point){ 35 return false; 36 } 37 virtual Vector getNormal(const Vector &point) throw(NotOnSurfaceException){ 38 throw NotOnSurfaceException(__FILE__,__LINE__); 39 } 40 virtual LineSegmentSet getLineIntersections(const Line &line){ 41 LineSegmentSet res(line); 42 res.insert(LineSegment(line.negEndpoint(),line.posEndpoint())); 43 return res; 44 } 45 virtual std::string toString(){ 46 return "Everywhere()"; 47 } 25 48 }; 26 49 … … 28 51 virtual bool isInside(const Vector &point){ 29 52 return false; 53 } 54 virtual bool isOnSurface(const Vector &point){ 55 return false; 56 } 57 virtual Vector getNormal(const Vector &point) throw(NotOnSurfaceException){ 58 throw NotOnSurfaceException(__FILE__,__LINE__); 59 } 60 virtual LineSegmentSet getLineIntersections(const Line &line){ 61 return LineSegmentSet(line); 62 } 63 virtual std::string toString(){ 64 return "Nowhere()"; 30 65 } 31 66 }; … … 36 71 virtual ~AndShape_impl(); 37 72 virtual bool isInside(const Vector &point); 73 virtual bool isOnSurface(const Vector &point); 74 virtual Vector getNormal(const Vector &point) throw(NotOnSurfaceException); 75 virtual LineSegmentSet getLineIntersections(const Line&); 76 virtual std::string toString(); 38 77 private: 39 78 Shape::impl_ptr lhs; … … 46 85 virtual ~OrShape_impl(); 47 86 virtual bool isInside(const Vector &point); 87 virtual bool isOnSurface(const Vector &point); 88 virtual Vector getNormal(const Vector &point) throw(NotOnSurfaceException); 89 virtual LineSegmentSet getLineIntersections(const Line&); 90 virtual std::string toString(); 48 91 private: 49 92 Shape::impl_ptr lhs; … … 56 99 virtual ~NotShape_impl(); 57 100 virtual bool isInside(const Vector &point); 101 virtual bool isOnSurface(const Vector &point); 102 virtual Vector getNormal(const Vector &point) throw(NotOnSurfaceException); 103 virtual LineSegmentSet getLineIntersections(const Line&); 104 virtual std::string toString(); 58 105 private: 59 106 Shape::impl_ptr arg;
Note:
See TracChangeset
for help on using the changeset viewer.