(triangleA, triangleB)
| 22 | * @return {boolean} `true` if the Triangles intersect, otherwise `false`. |
| 23 | */ |
| 24 | var TriangleToTriangle = function (triangleA, triangleB) |
| 25 | { |
| 26 | // First the cheapest ones: |
| 27 | |
| 28 | if ( |
| 29 | triangleA.left > triangleB.right || |
| 30 | triangleA.right < triangleB.left || |
| 31 | triangleA.top > triangleB.bottom || |
| 32 | triangleA.bottom < triangleB.top) |
| 33 | { |
| 34 | return false; |
| 35 | } |
| 36 | |
| 37 | var lineAA = triangleA.getLineA(); |
| 38 | var lineAB = triangleA.getLineB(); |
| 39 | var lineAC = triangleA.getLineC(); |
| 40 | |
| 41 | var lineBA = triangleB.getLineA(); |
| 42 | var lineBB = triangleB.getLineB(); |
| 43 | var lineBC = triangleB.getLineC(); |
| 44 | |
| 45 | // Now check the lines against each line of TriangleB |
| 46 | if (LineToLine(lineAA, lineBA) || LineToLine(lineAA, lineBB) || LineToLine(lineAA, lineBC)) |
| 47 | { |
| 48 | return true; |
| 49 | } |
| 50 | |
| 51 | if (LineToLine(lineAB, lineBA) || LineToLine(lineAB, lineBB) || LineToLine(lineAB, lineBC)) |
| 52 | { |
| 53 | return true; |
| 54 | } |
| 55 | |
| 56 | if (LineToLine(lineAC, lineBA) || LineToLine(lineAC, lineBB) || LineToLine(lineAC, lineBC)) |
| 57 | { |
| 58 | return true; |
| 59 | } |
| 60 | |
| 61 | // Nope, so check to see if any of the points of triangleA are within triangleB |
| 62 | |
| 63 | var points = Decompose(triangleA); |
| 64 | var within = ContainsArray(triangleB, points, true); |
| 65 | |
| 66 | if (within.length > 0) |
| 67 | { |
| 68 | return true; |
| 69 | } |
| 70 | |
| 71 | // Finally check to see if any of the points of triangleB are within triangleA |
| 72 | |
| 73 | points = Decompose(triangleB); |
| 74 | within = ContainsArray(triangleA, points, true); |
| 75 | |
| 76 | if (within.length > 0) |
| 77 | { |
| 78 | return true; |
| 79 | } |
| 80 | |
| 81 | return false; |
no test coverage detected
searching dependent graphs…