⚠️ Warning: This is a draft ⚠️

This means it might contain formatting issues, incorrect code, conceptual problems, or other severe issues.

If you want to help to improve and eventually enable this page, please fork RosettaGit's repository and open a merge request on GitHub.

==More special cases== There may be more special cases. If p1==p2 and r==0, there is one unique answere that's a zero radius circle. If tow points are separated by exactly double the radius, there's only one answer. The latter can be treated as two identical circles, but then so can the former.

```from math import sqrt

def find_center(p1, p2, r):
if p1 == p2:
if r == 0: return [p1] # special special case
# maybe we can return a generator that yields random circles, eh?

(x1,y1), (x2,y2) = p1, p2
x, y = (x1 + x2)/2.0, (y1 + y2)/2.0
dx, dy = x1 - x, y1 - y
a = r*r / (dx*dx + dy*dy) - 1

if not a: return [(x0, y0)]
if a < 0: return []
a = sqrt(a)
return [(x + a*dy, y - a*dx), (x - a*dy, y + a*dx)]

print find_center((0, 0), (1, 1), 1) # normal case
print find_center((0, 0), (0, 0), 0) # special case 1
print find_center((0, 0), (0, 2), 1) # special case 2
```