import geometry;
size(10cm,0);
point c2=(13,5);
real r=4, R=abs(c2)-r;
circle[] C={circle(origin, 4), circle(c2,R)};
draw(C[0]^^C[1], blue);
segment s=segment(origin, c2);
draw(s, red, dot);
/**/
point T=curpoint(s,r/(r-R)*abs(c2));
dot(T);
/**/
line[] tgt=tangents(C[1], T);
draw(tgt);
point[][] t= new point[2][2];
for (int i=0; i < 2 ; ++i)
for (int j=0; j < 2; ++j) {
/**/
t[i][j]=intersectionpoints(C[i],tgt[j])[0];
draw(C[i].C--t[i][j], dot);
markrightangle(T, t[i][j], C[i].C, size=(i == 0 ? 2mm : 0));
}
addMargins(cm/2,cm/2);