Warum kann ich den Winkel, den ich mit \tkzFindAngle ermittelt habe, nicht mit 180 vergleichen?

Warum kann ich den Winkel, den ich mit \tkzFindAngle ermittelt habe, nicht mit 180 vergleichen?

Ich übe mit dem tkz-euclidePaket. Ich versuche Folgendes auszuführen:

    \documentclass{article} 
    \usepackage{tkz-euclide,ifthen}

    \usetkzobj{all}
    \begin{document} 
    \begin{tikzpicture}[scale=4]
    \tkzInit[xmin=-1,xmax=1, ymin=-1,ymax=1]
    \draw (0,0) circle [radius=1];
    \tkzDefPoint(.3,.5){A}\tkzDefPoint(.5,.2){B}\tkzDefPoint(0,0){O}
    \tkzDrawPoints(A,B)
    \tkzFindAngle(A,O,B)\tkzGetAngle{hoek}
    \ifthenelse{\hoek<180}{\tkzDrawArc(O,A)(B);}{\tkzDrawArc(O,B)(A);};
    \end{tikzpicture}

    \end{document}

Ich erhalte folgende Fehlermeldung:

! Missing = inserted for \ifnum.
<to be read again> 
               .
l.12 \ifthenelse{\hoek<180}
                                 {\tkzDrawArc(O,A)(B);}{\tkzDrawArc(O,B)...

? H
I was expecting to see `<', `=', or `>'. Didn't.

Ich möchte einen Code, der zwischen A und B immer den gleichen Bogen zeichnet, also entweder den kurzen oder den langen. Warum funktioniert das nicht?

Antwort1

Wenn Sie \show\hoekkurz vor dem Test hinzufügen, wird Tex angehalten und zeigt Ihnen

> \hoek=macro:
->-37.234850000000000000.

\ifnum(das \ifthenelsefür numerische Tests verwendet wird) ist für Tex-Zahlen konzipiert, bei denen es sich um ganze Zahlen handelt.

Hier beschwert es sich also über die.

Der übliche TeX-Trick besteht darin, Dimensionen zu verwenden, um nicht ganzzahlige Werte zu speichern

    \ifthenelse{\lengthtest{\hoek pt<180pt}}{\tkzDrawArc(O,A)(B);}{\tkzDrawArc(O,B)(A);};

Antwort2

Das funktioniert:

\documentclass{article} 
    \usepackage{tkz-euclide,ifthen}

    \usetkzobj{all}
    \begin{document} 
    \begin{tikzpicture}[scale=4]
    \tkzInit[xmin=-1,xmax=1, ymin=-1,ymax=1]
    \draw (0,0) circle [radius=1];
    \tkzDefPoint(.3,.5){A}\tkzDefPoint(.5,.2){B}\tkzDefPoint(0,0){O}
    \tkzDrawPoints(A,B)
    \tkzFindAngle(A,O,B)\tkzGetAngle{hoek}
    \draw(0,0) node{\hoek};
    \pgfmathparse{(\hoek<180) ? 1 : 0 }
    \ifthenelse{\equal{\pgfmathresult}{1}}{\tkzDrawArc(O,A)(B);}{\tkzDrawArc(O,B)(A);}; 
    \end{tikzpicture}

    \end{document}

verwandte Informationen