DMUG-Archiv 2020

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

[Dmug] FN J 2020 HNY

Moin moin,

eine Illustration des erwähnten Nichtvorhandenseins eine Polarpunkts im Winkelraum des Dreikants; die Illustration ist auf einer Sphäre.

Clear[dreiBein]
(* dreiBein gives right-handed triads *)
dreiBein[x1_, x2_] :=
 Permute[FoldList[Cross, x1, {x2, x1}], Cycles[{{2, 3}}]]


Clear[rightHand]
rightHand[v1_, v2_, v3_] :=
 If[Det[{v1, v2, v3}] >= 0., {v1, v2, v3}, {v1, v3, v2}] /;
  MatrixQ[{v1, v2, v3}] \[And] Length[v1] == 3


Clear[stain, tint]
stain[o_Integer] :=
 Switch[o, 1, Cyan, 2, Magenta, 3, Yellow, _,
  RGBColor[0.368417`, 0.506779`, 0.709798`]]
tint[o_Integer] :=
 Switch[o, 1, LightCyan, 2, LightMagenta, 3, LightYellow, _, LightBlue]


Clear[rotator, rot1Shift, rot2Shift]
rotator[{u_, v_}, \[CapitalTheta]_] :=
  RotationTransform[\[CapitalTheta], {u, v}];
rot1Shift[{u_List?VectorQ, v_List?VectorQ}, s_List?VectorQ, r_Real,
  col_Integer : 0] := Block[
   {x, t},
   t = rotator[{u, v}, x];
   ParametricPlot3D[s + r t[u], {x, 0, 2 \[Pi]},
    Boxed -> False, Mesh -> None,
    ColorFunction -> Function[{x}, stain[col]]
    ]
   ] /; Norm[u] == 1. \[And] Norm[v] == 1.


rot2Shift[{u_List?VectorQ, v_List?VectorQ}, s_List?VectorQ, r_Real] :=
  Block[
   {x1, t1, x2, t2},
   t1 = rotator[{u, v}, x1];
   t2 = rotator[{u, Cross[u, v]}, x2];
   ParametricRegion[s + r t2[t1[u]], {{x1, 0, \[Pi]}, {x2, 0, \[Pi]}}]
   ] /; Norm[u] == 1. \[And] Norm[v] == 1.


Clear[sphericalWedges]
sphericalWedges[s_List, k1_List, k2_List, k3_List, r_Real : 1.] :=
 Block[
   {k1s, k2s, k3s, gc, wed1, wed2, wed3},
   If[MatrixRank[Subtract[#, s] & /@ {k1, k2, k3}] != 3,
    Print["Singular. Bye."];
    Return[$Failed]
    ];
   (* Die Spitze des Dreikants sei s, der Spitzenpunkt *)
   {k1s, k2s, k3s} = Normalize /@ rightHand[k1 - s, k2 - s, k3 - s];
   (* the three-edge wedge *)
   {gc[1], gc[2], gc[3]} =
    First[rot1Shift[#, s, r, 0]] & /@
     Partition[{k1s, k2s, k3s}, 2, 1, {1, 1}];
   gc[4] = sphericalTriangle[{k1s, k2s, k3s}, s, r, 0];
   (* k1s wedge *)
   wed1 = {k1s, Normalize[Last[dreiBein[k1s, k2s]]],
     Normalize[Last[dreiBein[k1s, k3s]]]};
   {gc[5], gc[6], gc[7]} =
    First[rot1Shift[#, s, r, 1]] & /@ Partition[wed1, 2, 1, {1, 1}];
   gc[8] = sphericalTriangle[wed1, s, r, 1];
   (* k2s wedge *)
   wed2 = {k2s, Normalize[Last[dreiBein[k2s, k3s]]],
     Normalize[Last[dreiBein[k2s, k1s]]]};
   {gc[9], gc[10], gc[11]} =
    First[rot1Shift[#, s, r, 2]] & /@ Partition[wed2, 2, 1, {1, 1}];
   gc[12] = sphericalTriangle[wed2, s, 1.01 r, 2];
   (* k3s wedge *)
   wed3 = {k3s, Normalize[Last[dreiBein[k3s, k1s]]],
     Normalize[Last[dreiBein[k3s, k2s]]]};
   {gc[13], gc[14], gc[15]} =
    First[rot1Shift[#, s, r, 3]] & /@ Partition[wed3, 2, 1, {1, 1}];
   gc[16] = sphericalTriangle[wed3, s, 1.02 r, 3];
   Graphics3D[{Splice[Array[gc, 16]],
     {Opacity[1./(2 E)], Sphere[s, r]},
     {AbsolutePointSize[9], Red,
      Point[N[s + r #] & /@ {k1s, k2s, k3s}]},
     {AbsolutePointSize[8], Black, Point[s]},
     Text["1", s + 1.1 r k1s], Text["2", s + 1.1 r k2s],
     Text["3", s + 1.1 r k3s]
     }, Ticks -> Automatic, Axes -> True,
    AxesLabel -> {"X", "Y", "Z"},
    Epilog ->
     Inset[Framed[
       Style[LineLegend[
         Array[stain, 4, 0], {"\[CapitalDelta]",
          "1\[CirclePlus]1\[Wedge][2|3]",
          "2\[CirclePlus]2\[Wedge][3|1]",
          "3\[CirclePlus]3\[Wedge][1|2]"}], 17],
       Background -> Darker[White]], {Right, Bottom}, {Right, Bottom}]
    ]
   ] /; MatrixQ[{s, k1, k2, k3}, NumericQ] \[And]
   Dimensions[{s, k1, k2, k3}][[2]] ==
    3 \[And] (Alternatives @@ Join[s, k1, k2, k3]) \[Element]
    Reals \[And] Positive[r]


und


sphericalWedges[{2.5375198118901423,
  1.0201933534694305, -0.2564003232040619}, {4.108751704896875, \
-5.896516517755337,
  5.5495152483048145}, {7.0087325846666175, -1.7010714005314682,
  7.441921892343082}, {-1.3069519434313825, -4.094854182783557, \
-10.616702282989259}, 18.3]


erzeugt das [Beweisb|B]ildchen in der Beilage.


Grüsse

Udo.

Attachment: dreikant-no-polarpunkt.jpg
Description: JPEG image

_______________________________________________
DMUG Deutschsprachiges Mathematica-Forum demug@XXXXXXX.ch
http://www.mathematica.ch/mailman/listinfo/demug
Archiv: http://www.mathematica.ch/archiv.html
Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

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