Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- interface Point {
- readonly lat: number;
- readonly lng: number;
- }
- function getArea(points: ReadonlyArray<Point>): number {
- let area = 0,
- i,
- j,
- point1,
- point2;
- for (i = 0, j = points.length - 1; i < points.length; j=i,++i) {
- point1 = points[i];
- point2 = points[j];
- area += point1.lng * point2.lat
- area -= point1.lat * point2.lng;
- }
- area /= 2;
- return area;
- }
- function getCentroid(points: ReadonlyArray<Point>): Point {
- let x = 0,
- y = 0,
- i,
- j,
- f,
- point1,
- point2;
- for (i = 0, j = points.length - 1; i < points.length; j=i,++i) {
- point1 = points[i];
- point2 = points[j];
- f = point1.lng * point2.lat - point2.lng * point1.lat;
- x += (point1.lng + point2.lng) * f;
- y += (point1.lat + point2.lat) * f;
- }
- f = getArea(points) * 6;
- return {lng:x / f, lat: y / f};
- }
Add Comment
Please, Sign In to add comment