Adaptagrams
|
A dynamic Polygon, to which points can be easily added and removed. More...
#include <geomtypes.h>
Public Member Functions | |
Polygon () | |
Constructs an empty polygon (with zero points). | |
Polygon (const int n) | |
Constructs a new polygon with n points. More... | |
Polygon (const PolygonInterface &poly) | |
Constructs a new polygon from an existing Polygon. More... | |
void | clear (void) |
Resets this to the empty polygon. | |
bool | empty (void) const |
Returns true if this polygon is empty. | |
size_t | size (void) const |
Returns the number of points in this polygon. | |
int | id (void) const |
Returns the ID value associated with this polygon. | |
const Point & | at (size_t index) const |
Returns a specific point in the polygon. More... | |
void | setPoint (size_t index, const Point &point) |
Sets a position for a particular point in the polygon.. More... | |
Polygon | simplify (void) const |
Returns a simplified Polyline, where all collinear line segments have been collapsed down into single line segments. More... | |
Polygon | curvedPolyline (const double curve_amount, const bool closed=false) const |
Returns a curved approximation of this multi-segment PolyLine, with the corners replaced by smooth Bezier curves. More... | |
void | translate (const double xDist, const double yDist) |
Translates the polygon position by a relative amount. More... | |
Public Member Functions inherited from Avoid::PolygonInterface | |
PolygonInterface () | |
Constructor. | |
virtual | ~PolygonInterface () |
Destructor. | |
Polygon | boundingRectPolygon (void) const |
Returns the bounding rectangle for this polygon. More... | |
Box | offsetBoundingBox (double offset) const |
Returns the bounding rectangle that contains this polygon with optionally some buffer space around it for routing. More... | |
Public Attributes | |
int | _id |
An ID for the polygon. | |
std::vector< Point > | ps |
A vector of the points that make up the Polygon. | |
std::vector< char > | ts |
If used, denotes whether the corresponding point in ps is a move-to operation or a Bezier curve-to. More... | |
A dynamic Polygon, to which points can be easily added and removed.
Avoid::Polygon::Polygon | ( | const int | n | ) |
Constructs a new polygon with n points.
A rectangle would be comprised of four point. An n segment PolyLine (represented as a Polygon) would be comprised of n+1 points. Whether a particular Polygon is closed or not, depends on whether it is a Polygon or Polyline. Shape polygons are always considered to be closed, meaning the last point joins back to the first point.
The values for points can be set by setting the Polygon:ps vector, or via the Polygon::setPoint() method.
[in] | n | Number of points in the polygon. |
Avoid::Polygon::Polygon | ( | const PolygonInterface & | poly | ) |
Constructs a new polygon from an existing Polygon.
[in] | poly | An existing polygon to copy the new polygon from. |
References Avoid::PolygonInterface::at(), ps, and Avoid::PolygonInterface::size().
|
virtual |
Returns a specific point in the polygon.
[in] | index | The array index of the point to be returned. |
Implements Avoid::PolygonInterface.
Referenced by Avoid::Router::outputInstanceToSVG(), and Avoid::ConnRef::splitAtSegment().
Polygon Avoid::Polygon::curvedPolyline | ( | const double | curve_amount, |
const bool | closed = false |
||
) | const |
Returns a curved approximation of this multi-segment PolyLine, with the corners replaced by smooth Bezier curves.
This function does not do any further obstacle avoidance with the curves produced. Hence, you would usually specify a curve_amount in similar size to the space buffer around obstacles in the scene. This way the curves will cut the corners around shapes but still run within this buffer space.
curve_amount | Describes the distance along the end of each line segment to turn into a curve. |
closed | Describes whether the Polygon should be treated as closed. Defaults to false. |
References _id, ps, simplify(), size(), and ts.
Referenced by Avoid::Router::outputInstanceToSVG().
void Avoid::Polygon::setPoint | ( | size_t | index, |
const Point & | point | ||
) |
Sets a position for a particular point in the polygon..
[in] | index | The array index of the point to be set. |
[in] | point | The point value to be assigned.. |
Referenced by dialect::Node::makeLibavoidPolygon().
Polygon Avoid::Polygon::simplify | ( | void | ) | const |
Returns a simplified Polyline, where all collinear line segments have been collapsed down into single line segments.
Referenced by curvedPolyline(), Avoid::ConnRef::displayRoute(), and Avoid::ConnRef::setFixedRoute().
void Avoid::Polygon::translate | ( | const double | xDist, |
const double | yDist | ||
) |
Translates the polygon position by a relative amount.
[in] | xDist | Distance to move polygon in the x dimension. |
[in] | yDist | Distance to move polygon in the y dimension. |
Referenced by Avoid::Router::moveShape().
std::vector<char> Avoid::Polygon::ts |
If used, denotes whether the corresponding point in ps is a move-to operation or a Bezier curve-to.
Each character describes the drawing operation for the corresponding point in the ps vector. Possible values are:
Referenced by clear(), curvedPolyline(), and Avoid::Router::outputInstanceToSVG().