MCPcopy Create free account
hub / github.com/Stanko/offset-polygon / createPolygon

Function createPolygon

src/offset-polygon.ts:56–99  ·  view source on GitHub ↗
(vertices: Vector[])

Source from the content-addressed store, hash-verified

54}
55
56function createPolygon(vertices: Vector[]): Polygon {
57 const edges: Edge[] = [];
58 let minX = vertices.length > 0 ? vertices[0].x : undefined;
59 let minY = vertices.length > 0 ? vertices[0].y : undefined;
60 let maxX = minX;
61 let maxY = minY;
62
63 for (let i = 0; i < vertices.length; i++) {
64 const vertex1 = vertices[i];
65 const vertex2 = vertices[(i + 1) % vertices.length];
66
67 const outwardNormal = outwardEdgeNormal(vertex1, vertex2);
68
69 const inwardNormal = inwardEdgeNormal(vertex1, vertex2);
70
71 const edge: Edge = {
72 vertex1,
73 vertex2,
74 index: i,
75 outwardNormal,
76 inwardNormal,
77 };
78
79 edges.push(edge);
80
81 const x = vertices[i].x;
82 const y = vertices[i].y;
83 minX = Math.min(x, minX);
84 minY = Math.min(y, minY);
85 maxX = Math.max(x, maxX);
86 maxY = Math.max(y, maxY);
87 }
88
89 const polygon: Polygon = {
90 vertices,
91 edges,
92 minX,
93 minY,
94 maxX,
95 maxY,
96 };
97
98 return polygon;
99}
100
101// based on http://local.wasp.uwa.edu.au/~pbourke/geometry/lineline2d/, edgeA => "line a", edgeB => "line b"
102

Callers 3

createMarginPolygonFunction · 0.70
createPaddingPolygonFunction · 0.70
offsetPolygonFunction · 0.70

Calls 2

outwardEdgeNormalFunction · 0.70
inwardEdgeNormalFunction · 0.70

Tested by

no test coverage detected