(a, b, c)
| 13384 | } |
| 13385 | |
| 13386 | function encloseBasis3(a, b, c) { |
| 13387 | var x1 = a.x, y1 = a.y, r1 = a.r, |
| 13388 | x2 = b.x, y2 = b.y, r2 = b.r, |
| 13389 | x3 = c.x, y3 = c.y, r3 = c.r, |
| 13390 | a2 = x1 - x2, |
| 13391 | a3 = x1 - x3, |
| 13392 | b2 = y1 - y2, |
| 13393 | b3 = y1 - y3, |
| 13394 | c2 = r2 - r1, |
| 13395 | c3 = r3 - r1, |
| 13396 | d1 = x1 * x1 + y1 * y1 - r1 * r1, |
| 13397 | d2 = d1 - x2 * x2 - y2 * y2 + r2 * r2, |
| 13398 | d3 = d1 - x3 * x3 - y3 * y3 + r3 * r3, |
| 13399 | ab = a3 * b2 - a2 * b3, |
| 13400 | xa = (b2 * d3 - b3 * d2) / (ab * 2) - x1, |
| 13401 | xb = (b3 * c2 - b2 * c3) / ab, |
| 13402 | ya = (a3 * d2 - a2 * d3) / (ab * 2) - y1, |
| 13403 | yb = (a2 * c3 - a3 * c2) / ab, |
| 13404 | A = xb * xb + yb * yb - 1, |
| 13405 | B = 2 * (r1 + xa * xb + ya * yb), |
| 13406 | C = xa * xa + ya * ya - r1 * r1, |
| 13407 | r = -(Math.abs(A) > 1e-6 ? (B + Math.sqrt(B * B - 4 * A * C)) / (2 * A) : C / B); |
| 13408 | return { |
| 13409 | x: x1 + xa + xb * r, |
| 13410 | y: y1 + ya + yb * r, |
| 13411 | r: r |
| 13412 | }; |
| 13413 | } |
| 13414 | |
| 13415 | function place(b, a, c) { |
| 13416 | var dx = b.x - a.x, x, a2, |
no outgoing calls
no test coverage detected