> read `circumscribed.mpl`; circumscribed := proc(a,b) local mx,my,r,trian,circ; mx := .5 ; my := evalf(1/2*(-a+a^2+b^2)/b); r := evalf(sqrt(mx^2+my^2)); trian := plot([0,0,1,0,a,b,0,0], style = LINE,color = green); circ := plot( [mx+r*cos(t),my+r*sin(t),t = 0 .. 2*Pi], color = red); plot[multiple]({trian,circ}) end -------------------------------------------------------------------------------- > circumscribed(2,4); -------------------------------------------------------------------------------- > read `bisector.mpl`; bisector := proc(a,b,c,d) local x,y,mx,my,run,rise; mx := 1/2*a+1/2*c; my := 1/2*b+1/2*d; run := -d+b; rise := c-a; x := mx+t*run; y := my+t*rise; RETURN([x,y]) end -------------------------------------------------------------------------------- > L1 := bisector(0,0,1,0); L1 := [1/2, t] -------------------------------------------------------------------------------- > bisector(0,0,1,1); [1/2 - t, 1/2 + t] -------------------------------------------------------------------------------- > L2 := subs(t=s, bisector(0,0,0,1)); L2 := [- s, 1/2] -------------------------------------------------------------------------------- > subs(t=s, "); [- s, 1/2] -------------------------------------------------------------------------------- > eq1 := op(1, L1) - op(1, L2); eq1 := 1/2 + s -------------------------------------------------------------------------------- > op(3, A+B+C); C -------------------------------------------------------------------------------- > op(3, [1, 2, 3, 4]); 3 -------------------------------------------------------------------------------- > eq2 := op(2, L1) - op(2, L2); eq2 := t - 1/2 -------------------------------------------------------------------------------- > solve({eq1, eq2}, {s, t}); {t = 1/2, s = -1/2} -------------------------------------------------------------------------------- > subs(", L1); [1/2, 1/2] -------------------------------------------------------------------------------- > read `bisector.mpl`; bisector := proc(a,b,c,d) local x,y,mx,my,run,rise; mx := 1/2*a+1/2*c; my := 1/2*b+1/2*d; run := -d+b; rise := c-a; x := mx+t*run; y := my+t*rise; RETURN([x,y]) end inter := proc(L1,L2) local subsL2,eq1,eq2,sol; subsL2 := subs(t = s,L2); eq1 := op(1,L1)-op(1,subsL2); eq2 := op(2,L1)-op(2,subsL2); sol := solve({eq1,eq2},{t,s}); RETURN(subs(sol,L1)) end -------------------------------------------------------------------------------- > inter(bisector(0,0,1,0), bisector(0,0,0,1)); [1/2, 1/2] -------------------------------------------------------------------------------- > eq1; 1/2 + s -------------------------------------------------------------------------------- > inter(bisector(1,2,3,4), bisector(5,6,7,8)); [2 - 2 t, 3 + 2 t] -------------------------------------------------------------------------------- > P := inter(bisector(0,0,1,0), bisector(0,0,a,b)); 2 2 b - a + a P := [1/2, 1/2 -----------] b -------------------------------------------------------------------------------- > > Q := inter(bisector(0,0,a,b), bisector(a,b,1,0)); (- 1 + a) a Q := [1/2, 1/2 b + 1/2 -----------] b -------------------------------------------------------------------------------- > expand(op(2, P) - op(2, Q)); 0 -------------------------------------------------------------------------------- > P := inter(bisector(a,b,c,d), bisector(a,b,e,f)); P := [ 2 2 (b d - b f - a e - c e + a c + f + e - d f) (- d + b) 1/2 a + 1/2 c - 1/2 -------------------------------------------------------, d e - d a - b e + c b - c f + a f 2 2 (b d - b f - a e - c e + a c + f + e - d f) (c - a) 1/2 b + 1/2 d - 1/2 -----------------------------------------------------] d e - d a - b e + c b - c f + a f -------------------------------------------------------------------------------- > Q := inter(bisector(a,b,c,d), bisector(c,d,e,f)); Q := [ 2 2 (b d - b f - a e - c e + a c + f + e - d f) (- d + b) 1/2 a + 1/2 c - 1/2 -------------------------------------------------------, d e - d a - b e + c b - c f + a f 2 2 (b d - b f - a e - c e + a c + f + e - d f) (c - a) 1/2 b + 1/2 d - 1/2 -----------------------------------------------------] d e - d a - b e + c b - c f + a f -------------------------------------------------------------------------------- > simplify(op(1, P) - op(1, Q)); 0 -------------------------------------------------------------------------------- > expand(op(2, P) - op(2, Q)); 0 -------------------------------------------------------------------------------- > plot([2*t/(1+t^2), (1-t^2)/(1+t^2), t=-100..100]); -------------------------------------------------------------------------------- >