tikz
我对使用和包还很陌生pgf
,我很难理解如何/何时使用pgfmathsetmacro
、pgfmathparse
和pgfmathresult
。我遇到以下问题:我试图定义一个我想在 TikZ 内部使用的线性变换命令。变换由以下公式给出
我考虑定义一个命令,该命令接受输入参数和预定义的值,a
并返回映射的坐标,然后我将在定义中使用它。这是一个 MWE:b
c
d
\coordinate
\documentclass[]{standalone}
\usepackage{tikz}
\begin{document}
\usetikzlibrary{math}
% Define mapping coordinates to map [a,b] -> [c,d]. Do it separately for x and y
\tikzmath{\ax = 1; \bx = 2;
\ay = 1; \by = 2;
\c = 0; \d = 1;}
% Define the transformation as a new command that uses pgf's math engine. It takes 1 input argument
% I don't know how to define this properly, it does not give me any error but I think it is wrong
\newcommand{\transformX}[1]{\pgfmathparse{((\c+\d) + (\d-\c)*((2*{#1} - (\ax+\bx))/(\bx-\ax)))/2}\pgfmathresult}
\newcommand{\transformY}[1]{\pgfmathparse{((\c+\d) + (\d-\c)*((2*{#1} - (\ay+\by))/(\by-\ay)))/2}\pgfmathresult}
\begin{tikzpicture}[x=1in,y=1in]
\coordinate (myCoord) at (\transformX{1.5},\transformY{1.4}); % error
\end{tikzpicture}
\end{document}
我以为pgfmathsetmacro
,pgmathparse
或者类似的函数应该可以解决问题,但我不知道如何实现它们。我读过这个帖子和这个帖子(我相信后者与我想要实现的目标非常相似)但我无法适应我的情况。
有什么想法吗?谢谢!