Ich habe mir überlegt, dass ich gerne für mein Referendariat lernen würde mit LuaLaTeX Vorlagen zu erstellen und zu automatisieren. Ich habe jetzt als erste Übung ein Dreieck erstellt mit zwei zufälligen Seiten, einem zufälligen Winkel, das gezeichnet wird und bei dem alle anderen Größen automatisch berechnet und beschriftet werden. Ich habe jetzt hierzu ein Skript geschrieben was auch funktioniert, aber sehr chaotisch ist. Ich habe in der Preambel eine Funktion random_decimal, die mir eine zufällige Zahl mit Genauigkeit n generiert. Zum Zeichnen des Dreiecks generiere oder berechne ich alle Variablen, die ich später nutzen möchte, da ich sie einerseits für die Beschriftung und andererseits für die Größe selbst benötige. Das sieht insgesamt so aus (also eher fürchterlich):

\begin{tikzpicture}
\begin{luacode*}
    math.randomseed(4)
    randomwinkel = math.floor(random_decimal(0, 360, 0))
    seiteEins = random_decimal(3, 6, 2)
    seiteZwei = random_decimal(3, 6, 2)
    winkelInnen = 90
    seiteDrei = math.sqrt(seiteEins*seiteEins + seiteZwei*seiteZwei - 2*seiteEins*seiteZwei*math.cos(winkelInnen*math.pi/180))
    winkelZwei = math.floor(math.asin(seiteZwei*math.sin(winkelInnen*math.pi/180)/seiteDrei)*(180/math.pi))
    winkelDrei = 180-winkelInnen-winkelZwei
    tex.print("\\xdef\\randomwinkel{" .. randomwinkel .. "}")
    tex.print("\\xdef\\seiteEins{" .. string.format("%.2f", seiteEins) .. "}")
    tex.print("\\xdef\\seiteZwei{" .. string.format("%.2f", seiteZwei) .. "}")
    tex.print("\\xdef\\seiteDrei{" .. string.format("%.2f", seiteDrei) .. "}")
    tex.print("\\xdef\\winkelInnen{" .. winkelInnen .. "}")
    tex.print("\\xdef\\winkelZwei{" .. winkelZwei .. "}")
    tex.print("\\xdef\\winkelDrei{" .. winkelDrei .. "}")
\end{luacode*}

\begin{scope}[rotate=\randomwinkel]

%Dieser Punkt dient zur Orientierung und wird für die Aufgabenstellung auskommentiert
\draw[fill=red] circle [radius=2pt] (0,0);

\coordinate (A) at (0,0);
\coordinate (B) at (\seiteEins, 0);
\coordinate (C) at (\winkelInnen:\seiteZwei);

%Winkel startend bei rotem Punkt entgegen Uhrzeigesinn
\pic [draw, "\textbullet", angle radius=1cm] {angle = B--A--C};
\pic [draw, "$\winkelZwei^\circ$", angle radius=1cm] {angle = C--B--A};
\pic [draw, "$\winkelDrei^\circ$", angle radius=1cm] {angle = A--C--B};
%Winkelangabe aus Winkel raus bei sehr kleinen Winkeln
%\pic [draw, "$\winkelDrei^\circ$", angle radius=1cm, angle eccentricity=1.2] {angle = A--C--B};
\end{scope}

%Seiten startend bei rotem Punkt entgegen Uhrzeigesinn, right, above right, left, etc. muss manuell angepasst werden
\draw (A)  edge ["\pgfmathprintnumber{\seiteEins} cm"{right}] (B);
\draw (B) edge ["\pgfmathprintnumber{\seiteDrei} cm"{above right}] (C);
\draw (C) edge ["\pgfmathprintnumber{\seiteZwei} cm"{left}] (A);
\end{tikzpicture}

Bevor ich mir jetzt andere Dinge überlege dachte ich, ich frage vorher mal nach ob es vielleicht Möglichkeiten gibt das ganze übersichtlicher zu nutzen. Gibt es vielleicht auch gute Beispiele/ Artikel,etc. an denen man sich orientieren kann?

gefragt 19 Jun, 12:59

anskak's gravatar image

anskak
1
Akzeptiert-Rate: 0%

Deine Antwort auf die Frage: (Bemerkungen bitte oben als Kommentar)
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×38
×29
×28

gestellte Frage: 19 Jun, 12:59

Frage wurde gesehen: 176 Mal

zuletzt geändert: 19 Jun, 12:59