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 |