When it’s ready.

出来るまで出来ない

続・円の交点を求めるプログラム

import math
size(300, 300)
background(0.3, 0.3, 0.3)
nofill()
stroke(1, 0.1, 0)

def writeEn(posX,posY,R):
    x = -R + posX
    y = -R + posY
    oval(x, y,R*2,R*2)

def circleCross(xc1, yc1, r1, xc2, yc2, r2):
    cross = []

    l = math.sqrt(pow((xc2-xc1), 2) + pow((yc2-yc1), 2) )
    s = math.atan2(xc2-xc1,yc2-yc1)
    c = ( pow(l,2) + pow(r1,2) - pow(r2,2))/(2*r1*l)
    a = math.acos(c)
    cross.append( xc1 + r1*math.cos(s+a) )
    cross.append( yc1 + r1*math.sin(s+a) )
    cross.append( xc2 + r1*math.cos(s-a) )
    cross.append( yc2 + r1*math.sin(s-a) )
    return cross

c1 = [100,100,90]
c2 = [200,100,80]
writeEn(c1[0],c1[1],c1[2])
writeEn(c2[0],c2[1],c2[2])

p1= circleCross(c1[0],c1[1],c1[2],
                c2[0],c2[1],c2[2])
stroke(0.5, 0.1, 0)
writeEn(p1[1],p1[0],10)
writeEn(p1[3],p1[2],10)

完全に自分で解決した訳ではないが、三角関数使うと上手く行くぽい。
ついでに、可視化する為にNodeBoxでコーディングしている。