以下代码应生成一个点及其相对于圆的逆点的图像:
\documentclass{standalone}
\usepackage{tkz-euclide}
\begin{document}
\begin{tikzpicture}
\tkzDefPoint(0,0){O}
\tkzDefPoint(1.3,1){A}
\tkzDefPoint(2.5,0){R}
%\tkzDefPoint(1,0){R}
\tkzDefPointBy[inversion = center O through R](A)\tkzGetPoint{A'}
\tkzDrawPoints[fill=black](O,A,A')
\tkzLabelPoints(O,A,A')
\tkzDrawCircle[dotted](O,R)
\end{tikzpicture}
\end{document}
但是点和它的图像都在圆内,这是不可能的。当我将圆的半径改为 1.0 时,我得到了正确的图像。tkz-tools-eu-points-by.tex
在我看来,文件中的逆实现好像从未使用过圆的半径,即命令\tkzInversePoint(#1,#2)(#3)#4
不使用其参数#2
。然而,这在以前版本的tkz-euclide
软件包中工作正常。
答案1
没错,这是一个错误。我一直在奇怪地修改这个宏。你可以用下面的修改来纠正它,它将在下一次更新中出现
\documentclass{standalone}
\usepackage{tkz-euclide}
\makeatletter
\def\tkzInversePoint(#1,#2)(#3)#4{%
\begingroup
\gdef\tkz@LastList{#4}
\foreach\PointIP in {#3}{%
\FirstPointInList\tkz@LastList
\ifx\tkz@FirstPoint\tkzutil@empty
\xdef\tkz@pointtsf{\PointIP '}
\else
\xdef\tkz@pointtsf{\tkz@FirstPoint}
\fi
\tkzCalcLength[cm](#1,#2)\tkzGetLength{tkz@lna}
\tkzCalcLength[cm](#1,\PointIP)\tkzGetLength{tkz@lnb}
\edef\tkz@lnc{\tkz@lna/\tkz@lnb*\tkz@lna}
\tkzVecKNorm[\tkz@lnb](#1,\PointIP)
}
\endgroup
}
\def\tkzUInversePoint(#1,#2)(#3){%
\begingroup
\tkzCalcLength[cm](#1,#2)\tkzGetLength{tkz@lna}%
\tkzCalcLength[cm](#1,#3)\tkzGetLength{tkz@lnb}%
\edef\tkz@lnc{\fpeval{\tkz@lna/\tkz@lnb*\tkz@lna}}
\tkzVecKNorm[\tkz@lnc](#1,#3)
\endgroup
}
\makeatother
\begin{document}
\begin{tikzpicture}
\tkzDefPoint(0,0){O}
\tkzDefPoint(1.3,1){A}
\tkzDefPoint(2.5,0){R}
%\tkzDefPoint(1,0){R}
\tkzDefPointBy[inversion = center O through R](A)\tkzGetPoint{A'}
\tkzDrawPoints[fill=black](O,A,A',R)
\tkzLabelPoints(O,A,A')
\tkzDrawCircle[](O,R)
\end{tikzpicture}
\end{document}