![极坐标会导致 TikZ 错位吗?](https://linux22.com/image/391285/%E6%9E%81%E5%9D%90%E6%A0%87%E4%BC%9A%E5%AF%BC%E8%87%B4%20TikZ%20%E9%94%99%E4%BD%8D%E5%90%97%EF%BC%9F.png)
我正在尝试使用极坐标对齐两条路径:
\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}
\path [fill=blue] (0,0) -- +(-135:5mm) -- ([turn]90:25mm) -- ([turn]90:5mm) -- cycle;
\path [fill=red] (0,0) -- +(-135:5mm) -- ([turn]90: 5mm) -- ([turn]90:5mm) -- cycle;
\end{tikzpicture}
\end{document}
然而,它们略有错位:
(下图经过裁剪并放大)
我是否遗漏了什么,或者计算错误了?
答案1
这个问题已经存在PGF 中的不准确性Mark Wibrow 很久以前就指出了这一点。如果我们应用它的修正,\pgfpointnormalised
我们不仅可以获得正交投影的更好精度,而且可以获得更好的精度[turn]
。
\documentclass[tikz]{standalone}
\usetikzlibrary{spy}
% use the Mark Wibrow's correction
\makeatletter
\def\pgfpointnormalised#1{%
\pgf@process{#1}%
\pgfmathatantwo{\the\pgf@y}{\the\pgf@x}%
\let\pgf@tmp=\pgfmathresult%
\pgfmathcos@{\pgf@tmp}\pgf@x=\pgfmathresult pt\relax%
\pgfmathsin@{\pgf@tmp}\pgf@y=\pgfmathresult pt\relax%
}
\makeatother
\begin{document}
\begin{tikzpicture}[spy using outlines={circle, magnification=7, size=17mm, connect spies}]
\path [draw=blue] (0,0) -- +(-135:5mm) -- ([turn]90:25mm) -- ([turn]90:5mm) -- cycle;
\path [draw=red] (0,0) -- +(-135:5mm) -- ([turn]90: 5mm) -- ([turn]90:5mm) -- cycle;
\spy on (-45:5mm) in node at (2,-.5);
\end{tikzpicture}
\end{document}