缩放路径而不丢失其中心位置

缩放路径而不丢失其中心位置
path p ;
p = (1u,1u) -- (1u,3u) -- (3u,3u) -- (3u,1u) -- cycle ;
draw p ;
draw p scaled 2 withcolor red ;

红色方块的中心从 移动(2,2)(4,4)但我希望它留在(2,2)

在此处输入图片描述

当然,在这个例子中一切都很简单,由于整数因子,我可以直接使用shifted -center p

在此处输入图片描述

然而,生活并非如此简单,对于小数因子,这个简单的技巧就无法正常工作。

path p ;
p = (1u,1u) -- (1u,3u) -- (3u,3u) -- (3u,1u) -- cycle ;
draw p ;
draw p scaled 1.5 shifted -center p withcolor red ;

在此处输入图片描述

那么,缩放路径时可以保持路径的中心位置吗?

答案1

是的,这是可能的。可能有更好的方法,但这里有一种方法。发生的缩放与原点有关,因此您可以移至原点,进行缩放,然后再移回。您最初的尝试之所以成功,是因为幸运地选择了正方形的位置和比例因子。

\documentclass{article}
\usepackage{luamplib}
\begin{document}
\begin{mplibcode}
beginfig(0);
path p ;
u:=1cm;
p = (1u,1u) -- (1u,3u) -- (3u,3u) -- (3u,1u) -- cycle ;
draw p ;
draw p scaled 1.5 shifted -center p withcolor red ;
draw p shifted -center p scaled 1.5 shifted center p withcolor blue;
endfig;
\end{mplibcode}
\end{document}

在此处输入图片描述

相关内容