source:
src/Shapes/Shape.hpp@
97dff0
Last change on this file since 97dff0 was 1c9588, checked in by , 12 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.