load (draw); A : [0,0]; B : [3,1]; C : [4,5]; AB : B-A; AC : C-A; BC : C-B; /* Geraden in denen die Seiten liegen */ ag : B + pag * BC; bg : A + pbg * AC; cg : A + pcg * AB; /* Seitenlaengen */ a : sqrt(BC.BC); b : sqrt(AC.AC); c : sqrt(AB.AB); /* Seitenmittelpunkte */ Ma : B + 0.5 * BC; Mb : A + 0.5 * AC; Mc : A + 0.5 * AB; /* Seitenhalbierende */ sc : C + psc * ( C - Mc ); sa : A + psa * ( A - Ma ); sb : B + psb * ( B - Mb ); S : sa, solve (sa -sc, [psa, psc])[1]; /* Normalen auf die Seiten */ /* nctmp ist ein Vektor, der senkrecht auf c steht nctmp setzt sich aus AC und BC zusammen */ nctmp : u*AC + v * BC; sol : solve (nctmp.AB, [u,v]); sol : subst (pnc, %rnum_list[1], sol)$ nc : nctmp, sol[1]; natmp : r*AB + s * AC; sol : solve (natmp.BC, [r,s]); sol : subst (pna, %rnum_list[1], sol)$ na : natmp, sol[1]; nbtmp : r*AB + s * BC; sol : solve (nbtmp.AC, [r,s]); sol : subst (pnb, %rnum_list[1], sol)$ nb : nbtmp, sol[1]; /* Mittelsenkrechte */ mc : Mc + nc; ma : Ma + na; mb : Mb + nb; M : ma, solve (ma-mc, [pna, pnc])[1][1]; /* Hoehen */ ha : A + na; hb : B + nb; hc : C + nc; H : ha, solve (ha-hc, [pna, pnc])[1]; Ha : ha, solve (ha-ag, [pna, pag])[1]; Hb : hb, solve (hb-bg, [pnb, pbg])[1]; Hc : hc, solve (hc-cg, [pnc, pcg])[1]; /* Winkel */ alpharad : acos (AB.AC / (b*c)); betarad : acos (AB.BC / (c*a)); gammarad : acos (AC.BC / (a*b)); alpha : acos (AB.AC / (b*c)) * 360 / (2 * %pi); beta : acos (AB.BC / (c*a)) * 360 / (2 * %pi); gamma : acos (AC.BC / (a*b)) * 360 / (2 * %pi); xmax : lmax (map (lambda([x], x[1]), [A, B, C])); xmin : lmin (map (lambda([x], x[1]), [A, B, C])); ymax : lmax (map (lambda([x], x[2]), [A, B, C])); ymin : lmin (map (lambda([x], x[2]), [A, B, C])); bildbreite : lmax ([xmax - xmin, ymax - ymin]); xmax : xmin + bildbreite; ymax : ymin + bildbreite; ta : B + 0.5*(C-B) + [0.3, 0]; texta : concat ("set label '{/=25 @_{/=25 a}^{/=15 ->}}' at ", ta[1], "," , ta[2]); tb : A + 0.5*(C-A) - [0.8, 0]; textb : concat ("set label '{/=25 @_{/=25 b}^{/=15 ->}}' at ", tb[1], "," , tb[2]); tc : A + 0.5*(B-A) - [0, 0.4]; textc : concat ("set label '{/=25 @_{/=25 c}^{/=15 ->}}' at ", tc[1], "," , tc[2]); draw2d ( xaxis = false, xtics = false, yaxis = false, ytics = false, xrange = [xmin - 1, xmax + 1], yrange = [ymin - 1, ymax + 1], user_preamble = [ "set noborder", texta, textb, textc ], point_type = none, points_joined = true, points ([A, B, C, A]), label ( ["A", A[1]-0.3, A[2]-0.2], ["B", B[1]+0.5, B[2]-0.4], ["C", C[1], C[2]+0.5] ), /* Seitenhalbierende */ /* points ([A, Ma]), points ([B, Mb]), points ([C, Mc]), label ( ["Ma", Ma[1]+0.8, Ma[2]], ["Mb", Mb[1]-0.4, Mb[2]+0.4], ["Mc", Mc[1], Mc[2]-0.6], ["S", S[1]-0.2, S[2]-0.2] ), */ /* Mittelsenkrechte */ /* points ([M, Ma]), points ([M, Mb]), points ([M, Mc]), label ( ["Ma", Ma[1]-0.2, Ma[2]-0.2], ["Mb", Mb[1]-0.2, Mb[2]-0.2], ["Mc", Mc[1]-0.2, Mc[2]-0.2], ["M", M[1]-0.2, M[2]-0.2] ), */ /* Hoehen */ /* points ([A, Ha]), points ([B, Hb]), points ([C, Hc]), line_type = dots, points ([B, Ha]), points ([C, Ha]), points ([A, Hb]), points ([C, Hb]), points ([A, Hc]), points ([B, Hc]), line_type = solid, label ( ["Ha", Ha[1]-0.2, Ha[2]-0.2], ["Hb", Hb[1]-0.2, Hb[2]-0.2], ["Hc", Hc[1]-0.2, Hc[2]-0.2], ["H", H[1]-0.2, H[2]-0.2] ), */ dimensions = [600,600], file_name = "dreieck", terminal = eps );