Math 2D Functions
int setPolygonToCCW(Vector<vec2> & points)
Sets the counter-clockwise orientation for the polygon.Arguments
- Vector<vec2> & points - Vector containing all points of the polygon.
Return value
1 if the counter-clockwise orientation for the polygon is set successfully; otherwise, 0.void triangulatePolygon(const Vector<vec2> & points, Vector<unsigned short> & indices, int append_to_result)
Performs triangulation by ear clipping algorithm (complexity: O(n^2)/O(n))Arguments
- const Vector<vec2> & points - Vector containing all points of the polygon.
- Vector<unsigned short> & indices - Vector containing all points indices.
- int append_to_result
void resizePolygon(const Vector<vec2> & points, float offset, Vector<vec2> & result_points, int append_to_result)
Returns a set of points representing a shrinked/enlarged polygon. Supports concave polygons, CCW and CW orientations.Arguments
- const Vector<vec2> & points - Vector containing all points of the polygon.
- float offset
- Vector<vec2> & result_points - Vector containing all points of the shrinked/enlarged polygon.
- int append_to_result - Flag indicating if resulting points should be appended to the points of initial polygon - 0, or replace them - 1.
float getPolygonArea(const Vector<vec2> & points)
Returns the area of the given polygon in square units.Arguments
- const Vector<vec2> & points - Vector containing all points of the polygon.
Return value
Polygon's area, in square units.float getPolygonAreaSigned(const Vector<vec2> & points)
Returns the area of the given polygon in square units.Arguments
- const Vector<vec2> & points - Vector containing all points of the polygon.
Return value
Polygon's area, in square units.The value will be negative if the polygon is oriented clockwise.
void findIntersection(const vec2 & p1, const vec2 & p2, const vec2 & p3, const vec2 & p4, int & lines_intersect, int & segments_intersect, vec2 & intersection, vec2 & close_p1, vec2 & close_p2)
Finds the point of intersection between the two lines specified by the pairs of points p1 - p2 and p3 - p4 and sets the values of the last 5 arguments.Arguments
- const vec2 & p1 - Start point coordinates of the first line segment.
- const vec2 & p2 - End point coordinates of the first line segment.
- const vec2 & p3 - Start point coordinates of the second line segment.
- const vec2 & p4 - End point coordinates of the second line segment.
- int & lines_intersect - 1 if the lines to which the segments belong intersect; otherwise, 0.
- int & segments_intersect - 1 if the specified line segmentsintersect; otherwise, 0.
- vec2 & intersection - Coordinates of the point of intersection between the two line segments.
- vec2 & close_p1 - Coordinates of the first of the two closest points belonging to the first segment.
- vec2 & close_p2 - Coordinates of the second of the two closest points belonging to the second segment.
int polygonIsOrientedClockwise(const Vector<vec2> & points)
Returns a value indicating if a given polygon is oriented clockwise.Arguments
- const Vector<vec2> & points - Vector containing all points of the polygon.
Return value
1 if a given polygon is oriented clockwise; otherwise, 0.float getTriangleArea(const vec2 & p1, const vec2 & p2, const vec2 & p3)
Returns the area of the given triangle in square units.Arguments
- const vec2 & p1 - Coordinates of the first triangle vertex.
- const vec2 & p2 - Coordinates of the second triangle vertex.
- const vec2 & p3 - Coordinates of the third triangle vertex.
Return value
Triangle area, in square units.The value will be negative if the polygon is oriented clockwise.
float sign(const vec2 & point, const vec2 & segment_p1, const vec2 & segment_p2)
Returns a value indicating to which part of the segment the point belongs.Arguments
- const vec2 & point - Coordinates of the point to be checked.
- const vec2 & segment_p1 - Segment start point coordinates.
- const vec2 & segment_p2 - Segment end point coordinates.
int pointTriangleInside(const vec2 & point, const vec2 & v0, const vec2 & v1, const vec2 & v2)
Returns a value indicating if a given point is inside the specified triangle.Arguments
- const vec2 & point - Coordinates of the point to be checked.
- const vec2 & v0 - Coordinates of the first triangle vertex.
- const vec2 & v1 - Coordinates of the second triangle vertex.
- const vec2 & v2 - Coordinates of the third triangle vertex.
Return value
1 if a given point is inside the specified triangle; otherwise, 0.Last update: 2018-08-10
Help improve this article
Was this article helpful?
(or select a word/phrase and press Ctrl+Enter)