(p, q, r)
| 102029 | return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && (locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b) && (area(a.prev, a, b.prev) || area(a, b.prev, b)) || equals(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0); |
| 102030 | } |
| 102031 | function area(p, q, r) { |
| 102032 | return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y); |
| 102033 | } |
| 102034 | function equals(p1, p2) { |
| 102035 | return p1.x === p2.x && p1.y === p2.y; |
| 102036 | } |
no test coverage detected