![TikZ 椭圆和圆弧操作出乎意料](https://linux22.com/image/480156/TikZ%20%E6%A4%AD%E5%9C%86%E5%92%8C%E5%9C%86%E5%BC%A7%E6%93%8D%E4%BD%9C%E5%87%BA%E4%B9%8E%E6%84%8F%E6%96%99.png)
我正在尝试绘制以原点为中心的椭圆弧。我希望它以 45 度的初始角度开始绘制并以 90 度结束。
从这个问题在这个网站上,有一条评论指出,其中一种方法是
\documentclass{article}
\usepackage{tikz}
\usepackage[dvipsnames]{xcolor}
\begin{document}
\begin{tikzpicture}
\draw[fill=ProcessBlue!30] (45:2cm and 1cm) arc [start angle = 45.0, end angle=90.0, x radius = 2cm, y radius = 1cm];
\end{tikzpicture}
\end{document}
产生
除非我太笨,否则这看起来实际上并不是相对于水平方向呈 45 度角的图形。该点的坐标为(r*cos(pi/4), r*sin(pi/4))
,其中r
是使用此方法计算的公式来自维基百科。该点在下图中用红色标出。我还从原点画了一条线,以表明该点计算正确。
以下是我用来制作上述内容的东西。
\documentclass{article}
\usepackage{tikz}
\usepackage[dvipsnames]{xcolor}
\begin{document}
\begin{tikzpicture}
\draw (-4,0) -- (4,0);
\draw (0,-4) -- (0,4);
\draw[fill=blue] (45:2cm and 1cm) circle (0.05cm);
\draw[fill=ProcessBlue!30] (45:2cm and 1cm) arc [start angle = 45.0, end angle=90.0, x radius = 2cm, y radius = 1cm];
\draw[fill=red] (0.894427190999916, 0.894427190999916) circle (0.05cm);
\draw[dashed] (0,0) ellipse (2cm and 1cm);
\draw (0,0) -- (1,1);
\end{tikzpicture}
\end{document}
我的问题: 看起来该命令\draw[fill=ProcessBlue!30] (45:2cm and 1cm) arc...
并没有绘制从椭圆上的点开始的圆弧,该点具有轴2cm
和1cm
,与水平面成 45 度角(令人困惑的是,这就是人们绘制圆的方式......)。我想这是我第一次发现 TikZ 语法与我自然预期的相差如此之大。那么,它实际上在做什么(即,为什么它从蓝点开始)?有没有简单的以何种方式去做我最初打算做的事情(我强调简单,因为我想要做的事情并不是很先进)?
答案1
关于我的评论...我把所有的 45 改为 63.43,即 90-atan(1/2)。
使用 45 度角,您可以根据未拉伸的圆的 45 度角绘制圆弧。将圆拉伸为椭圆后,45 度角会变平。
总之,将 x 轴拉伸 2 倍后,单位圆上相对于 x 轴的 63.43 度将变成 45 度。
\documentclass{article}
\usepackage{tikz}
\usepackage{xcolor}
\begin{document}
\begin{tikzpicture}
\draw (-4,0) -- (4,0);
\draw (0,-4) -- (0,4);
\draw[fill=blue] (63.43:2cm and 1cm) circle (0.05cm);
\draw[fill=blue!30] (63.43:2cm and 1cm) arc [start angle = 63.43, end angle=90.0, x radius = 2cm, y radius = 1cm];
\draw[fill=red] (0.894427190999916, 0.894427190999916) circle (0.05cm);
\draw[dashed] (0,0) ellipse (2cm and 1cm);
\draw (0,0) -- (1,1);
\end{tikzpicture}
\end{document}
答案2
不存在不一致。这些点由 参数化(a cos(angle), b sin(angle))
。
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw (-4,0) -- (4,0);
\draw (0,-4) -- (0,4);
\draw[fill=blue]
(45:2cm and 1cm) arc [start angle = 45.0,
end angle=90.0, x radius = 2cm, y radius = 1cm];
\draw[dashed] (0,0) ellipse[x radius=2cm,y radius=1cm];
\path ({2*cos(45)},{1*sin(45)}) node[circle,inner sep=1pt,fill=red,
label={[text width=4cm]above right:{I am sitting at
$\bigl(a\,\cos(45),b\,\sin(45)\bigr)$ with $a=2$ and $b=1$.}}]{};
\end{tikzpicture}
\end{document}