LaTeX TikZ求助:scope旋转平行四边形未生效,如何正确实现?
TikZ中Scope旋转平行四边形无效的解决方案
问题原因
你在scope环境外部定义了平行四边形的坐标点(A)(B)(C)(D),scope的rotate选项仅作用于环境内部的绘图指令和新定义的坐标,不会修改已在外部定义完成的坐标。而椭圆的圆心(2,0)是在scope内部直接指定的,会被旋转坐标系影响,因此椭圆的旋转效果正常。
两种解决方法
方法1:将坐标定义移入Scope内部
让坐标在旋转后的坐标系下生成,绘制出的平行四边形自然会带有旋转效果:
\documentclass[tikz]{standalone} \usepackage{tikz} \usetikzlibrary{calc} \usetikzlibrary{arrows} \begin{document} \begin{tikzpicture}[] \begin{scope}[rotate=30] \coordinate (A) at (0,0); \coordinate (B) at (4,0); \coordinate (C) at (6,2); \coordinate (D) at (2,2); \draw (A) -- (B) --(C) -- (D) --cycle; \end{scope} \begin{scope}[rotate=60] \draw (2,0) ellipse (3 cm and 1.5cm); \end{scope} \end{tikzpicture} \end{document}
方法2:指定旋转中心保留外部坐标
如果需要保留外部的坐标定义,可以使用rotate around指定旋转中心(比如以(A)为中心),让已有坐标围绕该点旋转:
\documentclass[tikz]{standalone} \usepackage{tikz} \usetikzlibrary{calc} \usetikzlibrary{arrows} \begin{document} \begin{tikzpicture}[] \coordinate (A) at (0,0); \coordinate (B) at (4,0); \coordinate (C) at (6,2); \coordinate (D) at (2,2); % 以A点为中心旋转30° \begin{scope}[rotate around={30:(A)}] \draw (A) -- (B) --(C) -- (D) --cycle; \end{scope} \begin{scope}[rotate=60] \draw (2,0) ellipse (3 cm and 1.5cm); \end{scope} \end{tikzpicture} \end{document}
内容的提问来源于stack exchange,提问作者jochen
相关产品推荐
相关产品推荐

