La línea dibujada no llega al punto final

La línea dibujada no llega al punto final

Estoy haciendo una construcción que incluye conectar dos puntos mediante una línea. De alguna manera, la primera línea de K a E está bien, pero la de K a M no. ¿Cómo solucionar esto? Pregunta paralela: ¿hay una manera más fácil de dividir el ángulo <OBA por 4?

\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}

Ensayo

Respuesta1

La respuesta general aquí es usar \coordinateen lugar de \node. En realidad, A coordinatees un tipo específico de nodo, pero no funciona como un cuadro de texto, es solo un punto. Incluso un vacío \nodetendrá un tamaño y una línea dibujada hasta el nodo se detendrá en el borde del nodo.

Sin embargo, usar \coordinateaquí parece molestar \pgfgetlastxy, por lo que hay un par de alternativas.

  • añadiendo \path (M);después de especificar la coordenada:

    \coordinate(M) at ($(F)!0.5!(A)$); \path (M);
    

    De esa manera \pgfgetlastxyrecoge el punto correcto (al parecer).

  • dibujando al centerancla de M:

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

información relacionada