这是我的代码:
\begin{tikzpicture} [thick,x=1mm,y=1mm]
\draw (0:0) ellipse (10mm and 20mm);
\draw[fill=red] (0:0) -- (0:10 and 20) arc (0:180:10 and 20) -- cycle;
\draw[fill=blue] (0:0) -- (0:10 and 20) arc (0:-180:10 and 20) -- cycle;
\end{tikzpicture}
这将生成一个椭圆,其上部为红色,下部为蓝色。
问题:如何用坐标 (x,y) 定位这个椭圆?
答案1
\documentclass[tikz, border=1cm]{standalone}
\begin{document}
\begin{tikzpicture}[thick]
\draw[fill=red] (3,2) -- +(0:1) arc[start angle=0, end angle=180, x radius=1, y radius=2] -- cycle;
\draw[fill=blue] (3,2) -- +(0:1) arc[start angle=0, end angle=-180, x radius=1, y radius=2] -- cycle;
\draw[orange,->] (0,0)node[above]{(0,0)} -- (3,2)node[above]{(3,2)};
\end{tikzpicture}
\end{document}
答案2
您的椭圆以点(0:0)
=为中心(0,0)
,即当前坐标系的原点。
您可以将此坐标更改为其他坐标,或者移动坐标系:
\begin{tikzpicture} [thick,x=1mm,y=1mm]
\begin{scope}[shift={(x,y)}]% ← Use any coordinate you want here.
\draw (0:0) ellipse (10mm and 20mm);
\draw[fill=red] (0:0) -- (0:10 and 20) arc (0:180:10 and 20) -- cycle;
\draw[fill=blue] (0:0) -- (0:10 and 20) arc (0:-180:10 and 20) -- cycle;
\end{scope}
% The following dot will not be at the center of the ellipse:
\fill (0,0) circle[radius=2pt];
\end{tikzpicture}
如果您需要在文档中多次放置此椭圆,您可以将其全部打包到自定义宏或 TikZ 图片中,具体取决于您的目标。
这是一个简单的实现,带有一张图片,可让您设置椭圆的中心。
\draw
我已将之后的\fill
(不再绘制)移动,以便椭圆的边框不会被任何填充覆盖。
我也只使用一个坐标系(canvas
一带有单位)并且不要将其与xy
坐标系(将给定值与x
/y
长度相乘)混合。
代码
\documentclass[tikz,convert]{standalone}
\tikzset{
my ellipse/.pic={
\tikzset{start angle=0, x radius=10mm, y radius=20mm}
\fill[red] (0:0) -- (0:10mm and 20mm) arc [delta angle= 180] -- cycle;
\fill[blue] (0:0) -- (0:10mm and 20mm) arc [delta angle=-180] -- cycle;
\draw (0:0) ellipse[];
}
}
\begin{document}
\begin{tikzpicture}
\draw[help lines] (-3.5,-1.5) grid (2.5,4.5);
\pic at (1,2) {my ellipse};
\pic at (-2,1) {my ellipse};
\fill (0,0) circle[radius=2pt];
\end{tikzpicture}
\end{document}