vardef equilateral_triangle_point(expr a, b) = b shifted -a rotated 60 shifted a enddef; vardef euclidean_bisector(expr a,b,c,r) = save arc,p,q,e; path arc; numeric p,q; pair e; arc = fullcircle scaled r shifted b; p = ypart ( (a--b) intersectiontimes arc ); q = ypart ( (b--c) intersectiontimes arc ); e = equilateral_triangle_point(point p of arc, point q of arc); hide( draw subpath(p-1/4,p+1/4) of arc withcolor .7[red,white]; draw subpath(q-1/4,q+1/4) of arc withcolor .7[red,white]; draw point p of arc -- point q of arc -- e -- cycle withcolor .7[blue,white]; ) e enddef; vardef vector_bisector(expr a,b,c,r) = b + unitvector (a-b) scaled r + unitvector (c-b) scaled r enddef; vardef interior_bisector(expr a,b,c) = (1/(1+abs(c-b)/abs(a-b)))[a,c] enddef; pair A,B,C; A = 120 right rotated 52; B = origin; C = 144 right rotated -4;