
Ich erstelle eine Konstruktion, bei der zwei Punkte durch eine Linie verbunden werden. Aus irgendeinem Grund ist die erste Linie von K nach E in Ordnung, die von K nach M jedoch nicht. Wie kann ich das lösen? Nebenfrage: Gibt es eine einfachere Möglichkeit, den Winkel <OBA durch 4 zu teilen?
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usepackage{amsmath,amssymb,amsthm,amsfonts,thmtools}
\usepackage[top=1in,bottom=1in,right=1in,left=1in]{geometry}
\usetikzlibrary{tikzmark, shapes, arrows, calc, intersections, through, backgrounds}
\newcommand{\tikzAngleOfLine}{\tikz@AngleOfLine}
\def\tikz@AngleOfLine(#1)(#2)#3{%
\pgfmathanglebetweenpoints{%
\pgfpointanchor{#1}{center}}{%
\pgfpointanchor{#2}{center}}
\pgfmathsetmacro{#3}{\pgfmathresult}%
}
\begin{document}
\begin{tikzpicture}[scale=12,cap=round,>=latex]
% draw the coordinates
\draw[thin, name path=x] (-0.2cm,0cm) -- (1.1cm,0cm);
\draw[thin, name path=y] (0cm,-0.1cm) -- (0cm,0.4cm);
\coordinate (O) at (0cm,0cm) node[below left=3pt]{$O$};
\coordinate (A) at (1cm,0cm);
\coordinate (B) at (0cm,0.25cm);
\draw[thin] (A) circle(0.1pt) node[below=3pt]{$A$} -- (B) circle(0.1pt) node[left]{$B$};
\tikzAngleOfLine(B)(O){\AngleStart};
\tikzAngleOfLine(B)(A){\AngleEnd};
\pgfmathsetmacro{\alp}{(\AngleEnd+3*\AngleStart)/4};
\draw[thin,red, name path=BE] (B) -- ++(\alp:0.3cm);
\path [name intersections={of=BE and x,by=E}];
\draw (E) circle(0.1pt) node[below left=3pt]{$E$};
\draw[thin,blue, name path=BF] (B) -- ++(\alp-45:0.3cm);
\path [name intersections={of=BF and x,by=F}];
\draw (F) circle(0.1pt) node[below left=3pt]{$F$};
\node (M) [] at ($(F)!0.5!(A)$) {};
\pgfgetlastxy{\xM}{\yM}
\draw (M) circle(0.1pt) node[below left=3pt]{$M$};
\pgfmathsetmacro{\rM}{1-\xM*1pt/1cm*1/12};
\draw[thin, name path=AF] ([shift=(0:\rM)] M) arc (0:180:\rM);
\path[name intersections={of=AF and y,by=K},fill=black];
\draw (K) circle(0.1pt) node[above left=3pt]{$K$};
\draw[thin,green] (K) -- (E); % neatly landing in E
\draw[thin,green] (K) -- (M); % why not landing in M?
\end{tikzpicture}
\end{document}
Antwort1
Die allgemeine Antwort hier ist, \coordinate
anstelle von zu verwenden \node
. A coordinate
ist eigentlich ein bestimmter Knotentyp, aber er funktioniert nicht wie ein Textfeld, sondern ist nur ein Punkt. Sogar ein leerer Knoten \node
hat eine Größe, und eine zum Knoten gezogene Linie endet an der Knotengrenze.
Die Verwendung von scheint hier jedoch \coordinate
Probleme zu verursachen \pgfgetlastxy
, daher gibt es ein paar Alternativen
Anfügen
\path (M);
nach Angabe der Koordinate:\coordinate(M) at ($(F)!0.5!(A)$); \path (M);
Auf diese Weise
\pgfgetlastxy
wird (scheinbar) der richtige Punkt erreicht.Zeichnung zum
center
Anker vonM
:\draw[thin,green] (K) -- (M.center);