Constructor
new PolygonArea(geod, polylineopt)
Initialize a PolygonArea object.
Parameters:
Name | Type | Attributes | Default | Description |
---|---|---|---|---|
geod |
object | a Geodesic object. |
||
polyline |
bool |
<optional> |
false | if true the new PolygonArea object describes a polyline instead of a polygon. |
Properties:
Name | Type | Description |
---|---|---|
a |
number | the equatorial radius (meters). |
f |
number | the flattening. |
polyline |
bool | whether the PolygonArea object describes a polyline or a polygon. |
num |
number | the number of vertices so far. |
lat |
number | the current latitude (degrees). |
lon |
number | the current longitude (degrees). |
Methods
AddEdge(azi, s)
Add the next edge to the polygon.
This specifies the new vertex in terms of the edge from the current vertex.
Parameters:
Name | Type | Description |
---|---|---|
azi |
number | the azimuth at the current the point (degrees). |
s |
number | the length of the edge (meters). |
AddPoint(lat, lon)
Add the next vertex to the polygon.
This adds an edge from the current vertex to the new vertex.
Parameters:
Name | Type | Description |
---|---|---|
lat |
number | the latitude of the point (degrees). |
lon |
number | the longitude of the point (degrees). |
Clear()
Clear the PolygonArea object, setting the number of vertices to 0.
Compute(reverse, sign) → {object}
Compute the perimeter and area of the polygon.
Arbitrarily complex polygons are allowed. In the case of self-intersecting polygons the area is accumulated "algebraically", e.g., the areas of the 2 loops in a figure-8 polygon will partially cancel. If the object is a polygon (and not a polyline), the perimeter includes the length of a final edge connecting the current point to the initial point. If the object is a polyline, then area is nan. More points can be added to the polygon after this call.
Parameters:
Name | Type | Description |
---|---|---|
reverse |
bool | if true then clockwise (instead of counter-clockwise) traversal counts as a positive area. |
sign |
bool | if true then return a signed result for the area if the polygon is traversed in the "wrong" direction instead of returning the area for the rest of the earth. |
Returns:
r where r.number is the number of vertices, r.perimeter is the perimeter (meters), and r.area (only returned if polyline is false) is the area (meters2).
- Type
- object
TestEdge(azi, s, reverse, sign) → {object}
Compute the perimeter and area of the polygon with a tentative new edge.
A new vertex is not added to the polygon.
Parameters:
Name | Type | Description |
---|---|---|
azi |
number | the azimuth of the edge (degrees). |
s |
number | the length of the edge (meters). |
reverse |
bool | if true then clockwise (instead of counter-clockwise) traversal counts as a positive area. |
sign |
bool | if true then return a signed result for the area if the polygon is traversed in the "wrong" direction instead of returning the area for the rest of the earth. |
Returns:
r where r.number is the number of vertices, r.perimeter is the perimeter (meters), and r.area (only returned if polyline is false) is the area (meters2).
- Type
- object
TestPoint(lat, lon, reverse, sign) → {object}
Compute the perimeter and area of the polygon with a tentative new vertex.
A new vertex is not added to the polygon.
Parameters:
Name | Type | Description |
---|---|---|
lat |
number | the latitude of the point (degrees). |
lon |
number | the longitude of the point (degrees). |
reverse |
bool | if true then clockwise (instead of counter-clockwise) traversal counts as a positive area. |
sign |
bool | if true then return a signed result for the area if the polygon is traversed in the "wrong" direction instead of returning the area for the rest of the earth. |
Returns:
r where r.number is the number of vertices, r.perimeter is the perimeter (meters), and r.area (only returned if polyline is false) is the area (meters2).
- Type
- object