This version of documentation is OUTDATED! Please switch to the latest one.

Math 2D Functions

Notice
Math 2D functions are the members of the Unigine::Math namespace.

intsetPolygonToCCW(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.

voidtriangulatePolygon(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

voidresizePolygon(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.

floatgetPolygonArea(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.

floatgetPolygonAreaSigned(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.
Notice
The value will be negative if the polygon is oriented clockwise.

voidfindIntersection(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.

intpolygonIsOrientedClockwise(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.

floatgetTriangleArea(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.
Notice
The value will be negative if the polygon is oriented clockwise.

floatsign(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.

intpointTriangleInside(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-06-04