You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 15:51:02