(edgeA, edgeB)
| 53 | return polygon; |
| 54 | } |
| 55 | function edgesIntersection(edgeA, edgeB) { |
| 56 | const den = (edgeB.vertex2.y - edgeB.vertex1.y) * (edgeA.vertex2.x - edgeA.vertex1.x) - (edgeB.vertex2.x - edgeB.vertex1.x) * (edgeA.vertex2.y - edgeA.vertex1.y); |
| 57 | if (den == 0) { |
| 58 | return null; |
| 59 | } |
| 60 | const ua = ((edgeB.vertex2.x - edgeB.vertex1.x) * (edgeA.vertex1.y - edgeB.vertex1.y) - (edgeB.vertex2.y - edgeB.vertex1.y) * (edgeA.vertex1.x - edgeB.vertex1.x)) / den; |
| 61 | const ub = ((edgeA.vertex2.x - edgeA.vertex1.x) * (edgeA.vertex1.y - edgeB.vertex1.y) - (edgeA.vertex2.y - edgeA.vertex1.y) * (edgeA.vertex1.x - edgeB.vertex1.x)) / den; |
| 62 | const isIntersectionOutside = ua < 0 || ub < 0 || ua > 1 || ub > 1; |
| 63 | return { |
| 64 | x: edgeA.vertex1.x + ua * (edgeA.vertex2.x - edgeA.vertex1.x), |
| 65 | y: edgeA.vertex1.y + ua * (edgeA.vertex2.y - edgeA.vertex1.y), |
| 66 | isIntersectionOutside |
| 67 | }; |
| 68 | } |
| 69 | function appendArc(arcSegments, vertices, center, radius, startVertex, endVertex, isPaddingBoundary) { |
| 70 | var startAngle = Math.atan2(startVertex.y - center.y, startVertex.x - center.x); |
| 71 | var endAngle = Math.atan2(endVertex.y - center.y, endVertex.x - center.x); |
no outgoing calls
no test coverage detected