source:
src/Shapes/Shape.hpp@
1b64b2f
| Last change on this file since 1b64b2f was 1c9588, checked in by , 13 years ago | |
|---|---|
|
|
| File size: 1.6 KB | |
| Rev | Line | |
|---|---|---|
| [997784] | 1 | /* |
| 2 | * Shape.hpp | |
| 3 | * | |
| 4 | * Created on: Jun 18, 2010 | |
| 5 | * Author: crueger | |
| 6 | */ | |
| 7 | ||
| 8 | #ifndef SHAPE_HPP_ | |
| 9 | #define SHAPE_HPP_ | |
| 10 | ||
| [56f73b] | 11 | // include config.h |
| 12 | #ifdef HAVE_CONFIG_H | |
| 13 | #include <config.h> | |
| 14 | #endif | |
| 15 | ||
| 16 | ||
| [997784] | 17 | #include <boost/shared_ptr.hpp> |
| [cfda65] | 18 | #include <iosfwd> |
| [997784] | 19 | |
| [b94634] | 20 | #include "Shapes/ShapeExceptions.hpp" |
| [b92e4a] | 21 | #include "Shapes/ShapeType.hpp" |
| [5de9da] | 22 | |
| [c5186e] | 23 | #include <vector> |
| 24 | ||
| [997784] | 25 | class Vector; |
| 26 | class Shape_impl; | |
| [c6f395] | 27 | class LineSegmentSet; |
| 28 | class Line; | |
| [997784] | 29 | |
| 30 | class Shape | |
| 31 | { | |
| 32 | public: | |
| 33 | typedef boost::shared_ptr<Shape_impl> impl_ptr; | |
| [e09b70] | 34 | friend impl_ptr getShapeImpl(const Shape&); |
| [997784] | 35 | |
| 36 | Shape(impl_ptr); | |
| 37 | Shape(const Shape&); | |
| 38 | virtual ~Shape(); | |
| 39 | ||
| [205d9b] | 40 | bool isInside(const Vector &point) const; |
| [5de9da] | 41 | bool isOnSurface(const Vector &point) const; |
| 42 | Vector getNormal(const Vector &point) const throw(NotOnSurfaceException); | |
| [997784] | 43 | |
| [b92e4a] | 44 | Vector getCenter() const; |
| [6acc2f3] | 45 | double getRadius() const; |
| [c67c65] | 46 | double getVolume() const; |
| 47 | double getSurfaceArea() const; | |
| [b92e4a] | 48 | |
| [735940] | 49 | LineSegmentSet getLineIntersections(const Line&) const; |
| [9c1c89] | 50 | std::vector<Vector> getHomogeneousPointsOnSurface(const size_t N) const; |
| [5a8d61] | 51 | std::vector<Vector> getHomogeneousPointsInVolume(const size_t N) const; |
| [c6f395] | 52 | |
| [997784] | 53 | Shape &operator=(const Shape& rhs); |
| 54 | ||
| [b92e4a] | 55 | bool operator==(const Shape &rhs) const; |
| 56 | ||
| [cfda65] | 57 | std::string toString() const; |
| [b92e4a] | 58 | enum ShapeType getType() const; |
| 59 | ||
| [d0cd6d] | 60 | void setName(const std::string &_name); |
| 61 | std::string getName() const; | |
| 62 | ||
| [997784] | 63 | protected: |
| 64 | impl_ptr getImpl() const; | |
| 65 | ||
| 66 | private: | |
| 67 | impl_ptr impl; | |
| [d0cd6d] | 68 | std::string name; |
| [997784] | 69 | }; |
| 70 | ||
| 71 | Shape Everywhere(); | |
| 72 | Shape Nowhere(); | |
| 73 | ||
| 74 | Shape operator&&(const Shape&,const Shape&); | |
| 75 | Shape operator||(const Shape&,const Shape&); | |
| 76 | Shape operator!(const Shape&); | |
| 77 | ||
| [cfda65] | 78 | std::ostream &operator<<(std::ostream&,const Shape&); |
| 79 | ||
| [997784] | 80 | #endif /* SHAPE_HPP_ */ |
Note:
See TracBrowser
for help on using the repository browser.
