DMUG-Archiv 2008

Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

Re: Aufgabe::Satz von Morley

Liebe Freundinnen und Freunde der Planimetrie

On Thu, 25 Sep 2008 19:00:00 +0200, Bernhard Schnizer <snip>@<snap> wrote:

Wikipedia verweist auf folgenden elementaren Beweis:
http://www.cut-the-knot.org/triangle/Morley/index.shtml

und rechnerisch kann man sich mit

Clear[morleyS];
morleyS::nonumtrian = "Numerical not a triangle.";
morleyS::nomode  = "The mode value `1` belongs not to {0, 1, 2, 3}.";
morleyS[{x1_, y1_}, {x2_, y2_}, {x3_, y3_}, (* Dreieck *)
                p_, (* Winkelteiler *)
                q_Integer: 1  (* Mode *)] :=
 Module[{v = {x1, x2, x3, y1, y2, y3}, preC = 32,
    e1, e2, e3, (* Ecken *)
    k1, k2, k3, (* Kanten *)
    w1, w2, w3, (* Winkel *)
    p1, p2, p3, (* Winkel-p-Teilendendreieck *)
    xD (* Defekt *),
    x = If[p > 1, 1/p, p], o = {{0, -1}, {1, 0}}},
   If[! VectorQ[v, NumericQ] ||
     Chop[N[Det[Join[{{1, 1, 1}}, Partition[v, 3]]]]] == 0,
    Message[morleyS::nonumtrian];
    Return[$Failed],
    If[ Det[Join[{{1, 1, 1}}, Partition[v, 3]]] > 0,
     e1 = {x1, y1}; e2 = {x2, y2}; e3 = {x3, y3},
     e1 = {x1, y1}; e2 = {x3, y3}; e3 = {x2, y2}
     ]
    ];
   k1 = e2 - e1;
   k2 = e3 - e2;
   k3 = e1 - e3;
   w1 = Pi - ArcCos[Normalize[k3].Normalize[k1]];
   w2 = Pi - ArcCos[Normalize[k1].Normalize[k2]];
   w3 = Pi - ArcCos[Normalize[k2].Normalize[k3]];
   If[ Chop[p] == 0,
    p1 = e1 + k1/(1 + w1/w2);
    p2 = e2 + k2/(1 + w2/w3);
    p3 = e3 + k3/(1 + w3/w1),
    p1 = e1 + (Sqrt[k1.k1]/(#1 + Cot[x w2]) (#1 #2 + o.#2)) &[
      Cot[x w1], Normalize[k1]];
    p2 = e2 + (Sqrt[k2.k2]/(#1 + Cot[x w3]) (#1 #2 + o.#2)) &[
      Cot[x w2], Normalize[k2]];
    p3 = e3 + (Sqrt[k3.k3]/(#1 + Cot[x w1]) (#1 #2 + o.#2)) &[
      Cot[x w3], Normalize[k3]]
    ];
   xD = 1 -
     Dot[Normalize[{1, 1, 1}],
      Normalize[ {(p2 - p1).(p2 - p1), (p3 - p2).(p3 - p2), (p1 -
           p3).(p1 - p3)}]];
   Switch[ q,
    0, SetAccuracy[xD, preC], (* defect *)
    1, Graphics[{{Thickness[0.01],
       Line[{e1, e2, e3, e1}], {RGBColor[1, 0, 0],
        Line[{p1, p2, p3, p1}]}},
      Line[{e1, p3}], Line[{e1, p1}], Line[{e2, p1}], Line[{e2, p2}],
      Line[{e3, p2}], Line[{e3, p3}]},
     PlotLabel ->
      "Winkelteiler = " <> ToString[x, InputForm] <>
       " Gleichseitigkeitsdefekt = " <>
       ToString[N[Abs[xD]], InputForm], PlotRange -> All,
     Frame -> True],
    2, SetPrecision[{p1, p2, p3}, preC/2], (* points 2D *)
    3, SetPrecision[Map[Join[#, {5 x}] &, {p1, p2, p3}], preC/2], (*
    points 3D *)
    _, Message[morleyS::nomode, q]; Return[$Failed]
    ]
   ] /; 0 <= p

einen Überblick verschaffen. Wenn der Winkelteiler p = 1 ist, dann wird das Ausgangsdreieck gezeichnet, für p = 1/3 (~= 3) wird das Morleydreieck gezeichnet.

Für irgendein Dreieck ist die Evidenz durch

In[14]:= FindRoot[ morleyS[{7, -8}, {-4, -1}, {3/7, 6/5}, x, 0] == 0, {x, 1, 5}]
Out[14]= {x -> 3.}

In[15]:= FindMinimum[ morleyS[{7, -8}, {-4, -1}, {3/7, 6/5}, x, 0], {x, 1}]
Out[15]= {0., {x -> 3.}}

gegeben, da in morleyS[] Werte mit p > 1 auf den reziproken Wert abgebildet werden. Man kann sich die inneren Dreiecke für verschiedene Teiler ansehen:

Show[morleyS[{-7, 8}, {-4, 2}, {-1, 1}, 1/3, 1],
 Graphics[
  Thread[Line[
    Transpose[
     morleyS[{-7, 8}, {-4, 2}, {-1, 1}, #, 2] & /@
      Range[0, 1, 0.005]]]]]
 ]

Alle möglichen bis auf Ähnlichkeit verschiedenen Dreiecke können mit einer Seite Line[{{0,0},{1,0}}] und dem dritten Punkt in der oberen Halbebene dargestellt werden. Damit kann man die drei Punkte des inneren Dreiecks als Funktion der beiden Winkel mit Scheitel in {0,0} bzw. in {1,0} und des Winkelteilers z darstellen

Remove[pp1, pp2, pp3];
pp1[w1_, w2_, z_] := {Cos[w1 z] Csc[(w1 + w2) z] Sin[w2 z], 1/(
  Cot[w1 z] + Cot[w2 z])}
pp2[w1_, w2_, z_] := {1 - (1 + Cot[w2] Cot[w2 z])/((Cot[w1] +
      Cot[w2]) (Cot[(Pi - w1 - w2) z] + Cot[w2 z])),
  Csc[w1 + w2] Csc[(Pi - w1) z] Sin[
    w1] Sin[(Pi - w1 - w2) z] Sin[w2 - w2 z]}
pp3[w1_, w2_, z_] := {Cos[w1 - w1 z] Csc[w1 + w2] Csc[(Pi - w2) z] Sin[
    w2] Sin[(Pi - w1 - w2) z],
  Csc[w1 + w2] Csc[(Pi - w2) z] Sin[
    w2] Sin[(Pi - w1 - w2) z] Sin[w1 - w1 z]}

und mit der Eingabe

 ContourPlot3D[
 Normalize[pp1[w1, w2, z] - pp3[w1, w2, z]] .
   Normalize[pp2[w1, w2, z] - pp3[w1, w2, z]] == 1/2,
 {w1, 0, \[Pi]}, {w2, 0, \[Pi]}, {z, 0, 1/2}]

(analog für die beiden Winkel mit Scheitel in pp2 bzw. pp1) einen Sichtbeweis für alle Dreiecke führen. Es resultiert eine Ebene z = 1/3 und eine dazu senkrechte, von z unabhängige Fläche, die natürlich den Fall darstellt, dass nur der Winkel in pp3 60° beträgt. Alle drei Winkel (mit Scheitel in pp1, pp2, pp3) sind nur dann unabhängig von w1 und w2 60°, wenn z = 1/3 ist.

Gruss
Udo.


Antworten:
Verweise:
Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

DMUG DMUG-Archiv, http://www.mathematica.ch/archiv.html