diff options
author | Norbert Preining <norbert@preining.info> | 2023-01-24 03:02:57 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2023-01-24 03:02:57 +0000 |
commit | b06c6695162b493aeec3b594c6beb518c15c98ba (patch) | |
tree | 0c1dc3cfc73ea789d6bdc4673d776f3ef652d6d8 /graphics/asymptote/base/geometry.asy | |
parent | 4451a2090261307c963209bc65fea9fde4eceeea (diff) |
CTAN sync 202301240302
Diffstat (limited to 'graphics/asymptote/base/geometry.asy')
-rw-r--r-- | graphics/asymptote/base/geometry.asy | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/graphics/asymptote/base/geometry.asy b/graphics/asymptote/base/geometry.asy index 9f0631f447..37d085cb1c 100644 --- a/graphics/asymptote/base/geometry.asy +++ b/graphics/asymptote/base/geometry.asy @@ -6418,13 +6418,13 @@ inversion inversion(circle c1, circle c2, real sgn = 1) point O = radicalcenter(c1, c2); return inversion(O^c1, O); } - real a = abs(c1.r/c2.r); - if(sgn > 0) { - point O = c1.C + a/abs(1 - a) * (c2.C - c1.C); - return inversion(a * abs(abs(O - c2.C)^2 - c2.r^2), O); + else { + point C1 = c1.C, C2 = c2.C; + real r1 = c1.r, r2 = sgn(sgn) * c2.r; + return inversion( + r1 * r2 * (1 - (length(C2 - C1) / (r1 + r2))^2), + (r2 * C1 + r1 * C2) / (r1 + r2)); } - point O = c1.C + a/abs(1 + a) * (c2.C - c1.C); - return inversion(-a * abs(abs(O - c2.C)^2 - c2.r^2), O); } /*<asyxml><function type="inversion" signature="inversion(circle,circle,circle)"><code></asyxml>*/ |