考虑以下 MWE:
\documentclass[border=5pt,tikz]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}[join=bevel]
\draw (0,0) coordinate (B) -- (6,0) coordinate (C)
-- (6,4.5) coordinate (A) -- cycle;
\coordinate (F) at ($(A)!(C)!(B)$);
\draw (C) -- (B) -- (0,8) coordinate (D) -- cycle;
\draw[fill=gray] (D) -- (A) -- (F) -- cycle;
\end{tikzpicture}
\end{document}
但是,灰色三角形的角应该正好位于从左上角到右下角的线上。(这可以通过 GeoGebra 或计算轻松验证。)
为什么会发生这种情况?
答案1
正如 Mark Wibrow 在这个答案\pgfpointnormalised
可以修正的定义以获得更好的精度。
\documentclass[border=5pt,tikz]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc, 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}[join=bevel, spy using outlines={circle, magnification=7, size=17mm, connect spies}]
\draw (0,0) coordinate (B) -- (6,0) coordinate (C)
-- (6,4.5) coordinate (A) -- cycle;
\coordinate (F) at ($(A)!(C)!(B)$);
\draw (C) -- (B) -- (0,8) coordinate (D) -- cycle;
\draw[fill=gray] (D) -- (A) -- (F) -- cycle;
\spy[red] on (F) in node at (1,2);
\end{tikzpicture}
\end{document}
笔记 :这是这个答案。