
Я пытаюсь построить график двух функций, представляющих повернутый эллипс в декартовых координатах. Однако точка, где встречаются эти две кривые, не выглядит так, как будто они "соединены" или замкнуты. Есть ли способ это исправить? Я не знаю, почему так.
Вот код:
\documentclass{article}
\usepackage{tikz}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}[scale=1]
\begin{axis}[ticks=none,
axis x line=middle,
axis y line=middle,
y axis line style={<->},
xlabel=$x$,
ylabel={$y$}
]
\addplot[-] expression[line width=0.4,smooth,samples=200,domain=0:49.999] {sqrt((1.38^(2.0)-0.5^(2.0))*(50.0*(x)-(x)^(2.0)))+0.5*(x)};
\addplot[-] expression[line width=0.4,smooth,samples=200,domain=0:49.999] {-sqrt((1.38^(2.0)-0.5^(2.0))*(50.0*(x)-(x)^(2.0)))+0.5*(x)};
\end{axis}
\end{tikzpicture}
\end{document}
Спасибо за помощь,
решение1
Я не знаю точно, почему, но, полагаю, вам, возможно, придется правильно настроить домен. Вот (не элегантный) обходной путь с использованием shorten
.
\documentclass[border=4]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.12}
\usepgfplotslibrary{groupplots}
\begin{document}
\begin{tikzpicture}[scale=1]
\begin{axis}[ticks=none,
axis x line=middle,
axis y line=middle,
y axis line style={<->},
xlabel=$x$,
ylabel={$y$}
]
\addplot[shorten >= -0.5ex,smooth,line width=0.4pt,samples=300,domain=0:49.99999999999999999999] {sqrt((1.38^(2.0)-0.5^(2.0))*(50.0*(x)-(x)^(2.0)))+0.5*(x)};
\addplot[shorten >= -0.5ex,smooth,line width=0.4pt,samples=300,domain=0:49.99999999999999999999] {-sqrt((1.38^(2.0)-0.5^(2.0))*(50.0*(x)-(x)^(2.0)))+0.5*(x)};
\end{axis}
\end{tikzpicture}
\end{document}
решение2
График также можно построить с использованием переменной параметра (в примере t). Преимущество состоит в том, что точки распределены более равномерно, поэтому требуется меньше образцов, и путь может быть замкнут ( smooth cycle
).
\documentclass{article}
\usepackage{tikz}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}[scale=1]
\begin{axis}[ticks=none,
axis x line=middle,
axis y line=middle,
y axis line style={<->},
xlabel=$x$,
ylabel={$y$}
]
\def\xzero{25}
\def\yzero{12.5}
\def\RotPhi{66}
\def\RadiusA{36.5}
\def\RadiusB{22}
\addplot[
line width=.4,
smooth cycle,
variable=t,
samples=100,
domain=0:360,
] ({
\xzero + \RadiusA*cos(\RotPhi)*cos(t) - \RadiusB*sin(\RotPhi)*sin(t)
}, {
\yzero + \RadiusA*sin(\RotPhi)*cos(t) + \RadiusB*cos(\RotPhi)*sin(t)
})
;
\end{axis}
\end{tikzpicture}
\end{document}