
私は存在しない合同定理 WWW (AAA?) のマクロを作成しようとしています。もちろん、辺 a を指定する必要があります (ちなみに、SideSideSide はうまく機能します)。誰かが最小限の動作例を求めました。質問は閉じられているため、質問を編集する以外に公開する方法がわかりません。一部のパッケージはここでは役に立たないかもしれませんが、最小限に抑えるようにしました。これは私にとってはうまく機能します。自分の回答で述べたように、度を使用して辺の長さを計算することで問題を解決しました。現在、SSS のコメントされた「クリップ」は機能しませんが、後で修正してみます。質問の編集が許可されていることを願っています。
\documentclass[]{scrartcl}
\usepackage[ngerman]{babel}
\usepackage{amsmath, amssymb} %für logische Symbole
\usepackage{tikz}
\usetikzlibrary{backgrounds}
\usetikzlibrary{decorations.pathmorphing}% Für Wellenlinien u.a.
\usetikzlibrary{automata,positioning} %für Schaltungen
\usetikzlibrary{angles}
\usetikzlibrary{quotes}
\usepackage[RPvoltages, europeanresistors, europeanvoltages]{circuitikz} %für Schaltungen
\usetikzlibrary{calc}
\usetikzlibrary{tikzmark, graphs, intersections}
\usetikzlibrary{mindmap, trees}
\usepackage{mathtools} %wird hier im speziellen benötigt um\abs zu definieren
\usepackage{gensymb}
\usepackage{pgfplotstable}
\usepackage{pgfplots}
\usepackage{pgffor}
\usetikzlibrary{datavisualization}
\usepgfplotslibrary{fillbetween}
\usetikzlibrary{patterns} % Hinzufügen der patterns-Bibliothek
\usepgfplotslibrary{groupplots}
%\usepackage{alphabeta}
\pgfplotsset{compat=1.18}
\usepackage{fp}%für Rechungen mit Variablen
\usepackage[round-mode = places, round-precision = 2]{siunitx}
\newcommand{\SSS}[4][1]{
\begin{tikzpicture}[scale=#1]
% Definiere die Punkte A und B
\coordinate[label=left:$A$] (A) at (0,0);
\coordinate[label=right:$B$] (B) at (#2,0);
% Zeichne die Seite c
\draw[blue] (A) -- (B) node[midway, below] {c = #2};
% Zeichne die Kreise um A und B
\draw[name path=circleA, green] (A) circle (#3);
\draw[name path=circleB, red] (B) circle (#4);
% Finde den Schnittpunkt der beiden Kreise und nenne ihn C
\path[name intersections={of=circleA and circleB, by={C}}];
% Berechne die Winkel
\pgfmathsetmacro\angleA{acos((#2^2+#4^2-#3^2)/(2*#2*#4))}
\pgfmathsetmacro\angleB{acos((#2^2+#3^2-#4^2)/(2*#2*#3))}
\pgfmathsetmacro\angleC{acos((#3^2+#4^2-#2^2)/(2*#3*#4))}
% Runde die Winkel auf volle Grad
\pgfmathround{\angleA}
\let\angleARounded\pgfmathresult
\pgfmathround{\angleB}
\let\angleBRounded\pgfmathresult
\pgfmathround{\angleC}
\let\angleCRounded\pgfmathresult
% Berechne die Höhe
\pgfmathsetmacro\height{#2*sin(\angleA)}
% Setze den Clip-Befehl
%\clip (-1,-1) rectangle (#2+1,\height+1);
% Zeichne die Seiten a und b
\draw[red] (B) -- (C) node[midway, above right] {a = #3};
\draw[green] (C) -- (A) node[midway, above left] {b = #4};
% Zeichne die Winkel
\shorthandoff{"}
\draw pic["$\alpha = \angleARounded^\circ$", draw=orange, <->, pic text options={yshift=0.1cm}, angle eccentricity=0.8, angle radius=1cm] {angle=B--A--C};
\draw pic["$\beta = \angleBRounded^\circ$", draw=orange, <->, pic text options={yshift=0.1cm}, angle eccentricity=0.8, angle radius=1cm] {angle=C--B--A};
\draw pic["$\gamma = \angleCRounded^\circ$", draw=orange, <->, pic text options={yshift=0.1cm}, angle eccentricity=0.8, angle radius=1cm] {angle=A--C--B};
\shorthandon{"}
\end{tikzpicture}
}
\newcommand{\WWW}[5][1]{
% Überprüfe, ob die Summe der Winkel 180° beträgt
\pgfmathparse{#2+#3+#4}
\ifdim\pgfmathresult pt=180pt
\begin{tikzpicture}[scale=#1, transform shape]
% Definiere die Punkte B und C
\coordinate[label=left:$B$] (B) at (0,0);
\coordinate[label=right:$C$] (C) at (#5,0);
% Zeichne die Seite a
\draw[red] (B) -- (C) node[midway, below] {a = #5};
% Berechne die Seiten b und c mit dem Sinussatz
\pgfmathsetmacro\sideB{#5*sin(#3)/sin(#2)}
\pgfmathsetmacro\sideC{#5*sin(#4)/sin(#2)}
\message{Seite a = #5, Seite b = \sideB, Seite c = \sideC}
% Zeichne die Winkelhalbierenden
\pgfmathsetmacro\langesC{\sideC+1}
\pgfmathsetmacro\langesB{\sideB+1}
\draw[name path=angleB, blue] (B) -- ++(#3:\langesC cm);
\draw[name path=angleC, green] (C) -- ++({180-#4}:\langesB cm);
% Finde den Schnittpunkt der beiden Winkel und nenne ihn A
\path[name intersections={of=angleB and angleC, by={A}}];
\node[above] at (A) {$A$};
% Zeichne die Seiten b und c
\draw[blue] (A) -- (B) node[midway, above left] {c = \pgfmathprintnumber{\sideC}};
\draw[green] (A) -- (C) node[midway, above right] {b = \pgfmathprintnumber{\sideB}};
% Zeichne die Innenwinkel
\shorthandoff{"}
\draw pic["$\alpha = #2^\circ$", draw=orange, <->, pic text options={yshift=0.1cm}, angle eccentricity=0.8, angle radius=1cm] {angle=B--A--C};
\draw pic["$\beta = #3^\circ$", draw=orange, <->, pic text options={yshift=0.1cm}, angle eccentricity=0.8, angle radius=1cm] {angle=C--B--A};
\draw pic["$\gamma = #4^\circ$", draw=orange, <->, pic text options={yshift=0.1cm}, angle eccentricity=0.8, angle radius=1cm] {angle=A--C--B};
\shorthandon{"}
\message{Winkel #2 = #2, Winkel #3 = #3, Winkel #4 = #4}
\message{Seite a = #5, Seite b = \sideB, Seite c = \sideC}
\end{tikzpicture}
\else
nicht zu konstruieren
\fi
}
\newcommand{\WSW}[4][1]{%#1=Skalierung #2=beta, #3=a, #4=gamma
% Standardmäßig wird die Seite a gezeichnet, also werden beta und gamma angegeben und alpha wird erstmal berechnet.
\pgfmathsetmacro\alph{180-#2-#4}
\begin{tikzpicture}[scale=#1, transform shape]
% Definiere die Punkte B und C
\coordinate[label=left:$B$] (B) at (0,0);
\coordinate[label=right:$C$] (C) at (#3,0);
% Zeichne die Seite a
\draw[red] (B) -- (C) node[midway, below] {a = #3};
% Berechne die Seiten b und c mit dem Sinussatz
\pgfmathsetmacro\sideB{#3*sin(#2)/sin(\alph)}
\pgfmathsetmacro\sideC{#3*sin(#4)/sin(\alph)}
%\message{Seite a = #4, Seite b = \sideB, Seite c = \sideC}
% Zeichne die Winkelhalbierenden
\pgfmathsetmacro\langesC{\sideC+1}
\pgfmathsetmacro\langesB{\sideB+1}
\draw[name path=angleB, blue] (B) -- ++(#2:\langesC cm);
\draw[name path=angleC, green] (C) -- ++({180-#4}:\langesB cm);
% Finde den Schnittpunkt der beiden Winkelhalbierenden und nenne ihn A
\path[name intersections={of=angleB and angleC, by={A}}];
\node[above] at (A) {$A$};
% Zeichne die Seiten b und c
\draw[blue] (A) -- (B) node[midway, above left] {c = \pgfmathprintnumber{\sideC}};
\draw[green] (A) -- (C) node[midway, above right] {b = \pgfmathprintnumber{\sideB}};
% Zeichne die Innenwinkel
\shorthandoff{"}
\draw pic["$\alpha = \alph^\circ$", draw=orange, <->, pic text options={yshift=0.1cm}, angle eccentricity=0.8, angle radius=1cm] {angle=B--A--C};
\draw pic["$\beta = #2^\circ$", draw=orange, <->, pic text options={yshift=0.1cm}, angle eccentricity=0.8, angle radius=1cm] {angle=C--B--A};
\draw pic["$\gamma = #4^\circ$", draw=orange, <->, pic text options={yshift=0.1cm}, angle eccentricity=0.8, angle radius=1cm] {angle=A--C--B};
\shorthandon{"}
\message{Winkel \alpha = \alph, Winkel \beta = #2, Winkel \gamma = #4}
\message{Seite a = #3, Seite b = \sideB, Seite c = \sideC}
\end{tikzpicture}
}
\begin{document}
\WWW{30}{40}{110}{4}\\
\WSW{50}{5}{60}\\
\SSS{3}{4}{5}\\
\end{document}
答え1
結論: 度数を使用! 放射度と度数で何度か試しましたが、どちらも機能しませんでした。他にも「偶然/ランダムに」解決した問題がいくつかあったようです。これはうまく機能します:
\pgfmathsetmacro\sideB{#5*sin(#3)/sin(#2)}
ご清聴ありがとうございました!パトリックより