Gezeichnete Linie landet nicht am Endpunkt

Gezeichnete Linie landet nicht am Endpunkt

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}

Versuch

Antwort1

Die allgemeine Antwort hier ist, \coordinateanstelle von zu verwenden \node. A coordinateist eigentlich ein bestimmter Knotentyp, aber er funktioniert nicht wie ein Textfeld, sondern ist nur ein Punkt. Sogar ein leerer Knoten \nodehat eine Größe, und eine zum Knoten gezogene Linie endet an der Knotengrenze.

Die Verwendung von scheint hier jedoch \coordinateProbleme 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 \pgfgetlastxywird (scheinbar) der richtige Punkt erreicht.

  • Zeichnung zum centerAnker von M:

    \draw[thin,green] (K) -- (M.center);
    

verwandte Informationen