绘制椭圆的问题

绘制椭圆的问题

我尝试使用 绘制一个椭圆的一部分\pgfpatharcto。但是,当我尝试与原始完整椭圆进行比较时,发现存在细微差异。我附上了代码以及结果。

\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}

\draw (2.5cm,0) ellipse (3.5cm and 3.8436cm);

\pgfsetstrokecolor{red}
\pgfmoveto{\pgfpoint{2.841cm}{3.8284cm}}
\pgfpatharcto{3.5cm}{3.8436cm}{0}{0}{0}{\pgfpoint{2.841cm}{-3.8284cm}}\pgfusepath{stroke};

\end{tikzpicture}
\end{document}

在此处输入图片描述

答案1

也可以绘制两次椭圆,但第二次在裁剪范围内:

\documentclass[tikz, border=1cm]{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}

\draw (2.5cm,0) ellipse (3.5cm and 3.8436cm);

\begin{scope}
\clip (2.5cm,0)--++(80:3.9) arc(80:-80:3.9)--cycle;
\draw[red] (2.5cm,0) ellipse (3.5cm and 3.8436cm);
\end{scope}

\end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

你可能想尝试元帖子来执行此操作。它有一个有用的subpath语法,可让您绘制已保存路径的片段。使用 进行编译lualatex

在此处输入图片描述

\RequirePackage{luatex85}
\documentclass[border=5mm]{standalone}
\usepackage{luamplib}
\begin{document}
\mplibtextextlabel{enable}
\begin{mplibcode}
beginfig(1);
    path e;
    e = fullcircle xscaled 3.5cm yscaled 3.8436cm;
    draw e withpen pencircle scaled 2 withcolor .8 white;
    draw subpath (-2,2) of e withcolor 2/3 red;
endfig;
\end{mplibcode}
\end{document}

Metapost 提供了沿着路径的“时间”概念。在fullcircle路径上,有 8 个时间点,从 0 点开始,就像是“3 点钟方向”。

所以subpath (0,2) of c是从 3 点到中午。您也可以使用分数:subpath (2.718, 3.1415) of c

正如我的例子所示,您可以使用负数来引用点 0“之前”的点。

相关内容