ttp://www.tensyo.com/urame/prog/linealgo.htm
//ベジェ点データqを与えてその区間 t=0〜1 で点を返す
function BezierData(q:TDp4;t:double):TDpoint;
var v:double;
begin
v:=1-t;
with Result do with q do begin
x:= v*v*v*x1+3*v*v*t*x2+3*v*t*t*x3+t*t*t*x4;
y:= v*v*v*y1+3*v*v*t*y2+3*v*t*t*y3+t*t*t*y4;
end;
end;

だそうだ。 折れ線データにするかビットマップに描いておいて、円との交点付近を求めて
それを初期値にニュートン法で解けば、実用時間で解けるだろう。