Statik: Initiierung des Programmmoduls

Erklärung zu den Funktionen im Modul initStatik aus dem File StatikModulinit.nb: 
Auf den linken inneren Balken neben dem Programmcode klicken und Enter drücken. (Achtung: Enter ist nicht der "Wagenrücklauf" für den Cursor!)
Anschliessend im Modul StatikWork.nb weiterarbeiten.

Erklärung zu den Funktionen im Modul initStatikOhneE aus diesem File StatikModulinitOhneErkl.nb: 
Wie initStatik, jedoch ohne Erklärungen.

(* Programmcode 2: *) 


(*  1 *)  
Remove["Global`*"];
(*  2 *)  
Off[ ];
Off[General::spell];
Off[General::spell1];
display={DisplayFunction->$DisplayFunction,AspectRatio->Automatic};
notDisplay=(DisplayFunction->Identity);


<<Graphics`Arrow`;

initStatikOhneE[nr_]:=Module[{},

(*  1 *) 

kResultOut[{x_,y__}]:=x+y;
kResultOut[x_,y__]:=x+y;
kResultPrint[{x_,y__}]:=Print["Resultierende Kraft kResultOut = ",x+y];
kResultPrint[x_,y__]:=Print["Resultierende Kraft kResultOut = ",x+y];

(*  2 *) 

geradeSchnittOut[pG1_,pG2_, qG1_,qG2_]:=
    Module[{gerade,λ,μ,pGI1,pGI2,λSchnitt,μSchnitt,
        pSchnitt1,pSchnitt2},
      Off[ ];Off[General::spell];Off[General::spell1];
      gerade[λ_,pGI1_,pGI2_]:=pGI1+λ (pGI2-pGI1);
      solvGSchnitt=Flatten[Solve[{
              gerade[λ,pG1,pG2][[1]]== 
                gerade[μ,qG1,qG2][[1]],gerade[λ,pG1,pG2][[2]]== 
                gerade[μ,qG1,qG2][[2]]},{λ,μ}]];                                                                                                                              
      λSchnitt= λ /.solvGSchnitt; 
      μSchnitt= μ /.solvGSchnitt; 
      pSchnitt1=gerade[λSchnitt,pG1,pG2]; 
      pSchnitt2=gerade[μSchnitt,qG1,qG2]; 
      If[pSchnitt1 == pSchnitt2,pSchnittOut=pSchnitt1,Print["Kein Schnitt"]]
      ]; 
geradeSchnittOut[{pG1_,pG2_, qG1_,qG2_}]:=  geradeSchnittOut[pG1,pG2, qG1,qG2];

richt[pGI1_,pGI2_]:=(pGI1-pGI2)/Norm[pGI1-pGI2];

kraftPunktZerleg[pG1_,pG2_, qG1_,qG2_,kIn_]:=Module[{λ,μ,pIntern},
solvZerleg=Flatten[Solve[richt[pG1,pG2] λ + richt[qG1,qG2] μ == kIn, {λ,μ}]];
kKomp1Out[pG1,pG2, qG1,qG2,kIn] = richt[pG1,pG2] λ/. solvZerleg;
kKomp2Out[pG1,pG2, qG1,qG2,kIn] = richt[qG1,qG2] μ/. solvZerleg;
Print["kKomp1out = ", kKomp1out=kKomp1Out[pG1,pG2, qG1,qG2,kIn],"  kKomp2out = ", kKomp2out=kKomp2Out[pG1,pG2, qG1,qG2,kIn]]
];
graphZerleg[pG1_,pG2_, qG1_,qG2_,kIn_]:= Show[Graphics[{PointSize[0.02], Point[pG1],Point[pG2],Point[qG1],Point[qG2],Point[pG1], Point[geradeSchnittOut[pG1,pG2, qG1,qG2]],
Line[{
pG1,pG2,
geradeSchnittOut[pG1,pG2, qG1,qG2], 
qG1,qG2,
geradeSchnittOut[pG1,pG2, qG1,qG2],
geradeSchnittOut[pG1,pG2, qG1,qG2]+kKomp1Out[pG1,pG2, qG1,qG2,kIn], 
geradeSchnittOut[pG1,pG2, qG1,qG2]+kKomp1Out[pG1,pG2, qG1,qG2,kIn]+kKomp2Out[pG1,pG2, qG1,qG2,kIn], 
geradeSchnittOut[pG1,pG2, qG1,qG2]+kKomp2Out[pG1,pG2, qG1,qG2,kIn], 
geradeSchnittOut[pG1,pG2, qG1,qG2]}],
Arrow[
geradeSchnittOut[pG1,pG2, qG1,qG2],
geradeSchnittOut[pG1,pG2, qG1,qG2]+kKomp1Out[pG1,pG2, qG1,qG2,kIn]],
Arrow[geradeSchnittOut[pG1,pG2, qG1,qG2],
geradeSchnittOut[pG1,pG2, qG1,qG2]+kIn],
Arrow[geradeSchnittOut[pG1,pG2, qG1,qG2],
geradeSchnittOut[pG1,pG2, qG1,qG2]+kKomp2Out[pG1,pG2, qG1,qG2,kIn]]}],notDisplay];

(*  3 *) 

vSenkrEben[v_]:={-v[[2]],v[[1]]};

kraftPunktZerlegSenkr[qG1_,pG1_,kIn_]:=Module[{λ,μ,pIntern},
solvZerleg=Flatten[Solve[richt[pG1,qG1] λ + richt[qG1,qG1+vSenkrEben[pG1-qG1]] μ == kIn, {λ,μ}]];
kKomp1Out[pG1,qG1,kIn] = richt[pG1,qG1] λ/. solvZerleg;
kKomp2Out[pG1,qG1,kIn] = richt[qG1,qG1+vSenkrEben[pG1-qG1]] μ/. solvZerleg;
Print["kKomp1out = ", kKomp1out=kKomp1Out[pG1,qG1,kIn],"  kKomp2out = ", kKomp2out=kKomp2Out[pG1,qG1,kIn]]
];

graphZerlegSenkr[qG1_,pG1_,kIn_]:= Show[Graphics[{PointSize[0.02], Point[pG1],Point[qG1],Point[qG1+vSenkrEben[pG1-qG1]],
Line[{
pG1,qG1,
qG1+vSenkrEben[pG1-qG1], 
qG1,
qG1+kKomp1Out[pG1,qG1,kIn], 
qG1+kKomp1Out[pG1,qG1,kIn]+kKomp2Out[pG1,qG1,kIn], 
qG1+kKomp2Out[pG1,qG1,kIn], 
qG1}],
Arrow[qG1,qG1+kKomp1Out[pG1,qG1,kIn]],
Arrow[qG1,qG1+kIn],
Arrow[qG1,qG1+kKomp2Out[pG1,qG1,kIn]]}],notDisplay];

(*  4 *) 

showPoints[points_]:=Show[Graphics[{PointSize[0.02],Map[Point,points]}],notDisplay];
showLinesToPoints[LinesToPoints_]:=Show[Graphics[{Line[LinesToPoints]}],notDisplay];
showPointsLines[points_,LinesToPoints_]:=Show[Graphics[{PointSize[0.02],Map[Point,points],Line[LinesToPoints]}],notDisplay];

tabIn[x_,y__]:={x,y};
tabIn[{x_,y__}]:={x,y};
arrow[{p1_,p2_}]:=Arrow[p1,p2];
tabArrow[p1_,x_,y__]:=Table[arrow[{p1,p1+tabIn[{x,y}[[k]]]}],{k,1,Length[tabIn[x,y]]}];
tabArrow[{p1_,x_,y__}]:=tabArrow[p1,x,y];
tabP0Arrow[p0_,p1_,x_,y__]:=Join[{Point[p0]},tabArrow[p1,x,y]];
tabP0Arrow[{p0_,p1_,x_,y__}]:=tabP0Arrow[p0,p1,x,y];
showGraph[u_]:=Show[Graphics[u],notDisplay];

showArrow[p1_,p2_]:=showGraph[Arrow[p1,p2]];
showArrow[{p1_,p2_}]:=showGraph[Arrow[p1,p2]];
showTabArrow[p1_,x_,y__]:=showGraph[tabArrow[p1,x,y]];
showTabArrow[{p1_,x_,y__}]:=showGraph[tabArrow[p1,x,y]];
showTabP0Arrow[p0_,p1_,x_,y__]:=showGraph[Join[{PointSize[0.02],Point[p0]}, tabArrow[p1,x,y]]];
showTabP0Arrow[{p0_,p1_,x_,y__}]:=showTabP0Arrow[p0,p1,x,y];
showBigPoints[faktor_,points_]:=Show[Graphics[{PointSize[faktor 0.02], Map[Point,points]}],notDisplay];
showGroundLine[len_:0.2, p0_]:=Show[Graphics[{PointSize[0.02], Point[p0], Line[{p0-{len,0},p0+{len,0}}]}],notDisplay];

(*  5 *) 

moment[drehpunkt_,mengePunkte_,mengeKraft_]:=If[ Length[mengePunkte]==Length[mengeKraft],
Apply[Plus,Table[Det[{mengePunkte[[k]]-drehpunkt,mengeKraft[[k]]}],{k,1,Length[mengePunkte]}]],Print["Anzahl Kraftpunkte ungleich Anzahl Kräfte"]];

resultMomentKraftAbsolut[drehpunkt_,mengePunkte_,mengeKraft_,q_]:=moment[drehpunkt,mengePunkte,mengeKraft]/Norm[q-drehpunkt];

(*  6 *) 

Print["Ohne Erklärungen"];
];

Anwendung

Mit dem initiierten Modul arbeiten: Dieser Teil sollte im File StatikWork.nb behandelt werden. (Kann hier auch, doch besteht die Gefahr, dass aus Versehen Teile des Moduls gelöscht werden könnten.)

initStatikOhneE[1]