This page has been translated automatically.
This version of documentation is OUTDATED! Please switch to the latest one.

# Math 2D Functions

This class represents a collection of two-dimensional math 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 segments intersect; 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: 2019-08-16