我对绘制卡西尼椭圆曲线很感兴趣,它有两个焦点A(-1,0) , B (1,0)
,另一个参数是3
。我发现这个问题但它不适合我的需要,因为 asympote 没有被我的 LaTeX 版本编译,而且我之前没有用过它,也不了解它。
所以,我想知道我们是否可以用 tikz 来做。在链接问题的任何评论中,它都说有人会将其翻译成 tikz,但它似乎是一个链接。也许我错了,在某个地方有一个使用 tikz 的解决方案只。
先感谢您。
答案1
您需要确定一个好的域和一些系数。颜色更新
\documentclass[a4paper]{article}
\usepackage{tkz-fct}
\begin{document}
\begin{tikzpicture}[scale=.75]
\tkzInit [xmin=-1,xmax=1,
ymin=-1,ymax=1,
xstep=.2,ystep=.2]
\foreach \i in {4,3.8,...,1.2} {%
\pgfmathsetmacro{\n}{8*\i}
\tkzFctPolar[domain=-pi:pi,fill=green!\n!white]{%
sqrt(cos(2*t)+sqrt(\i-sin(2*t)*sin(2*t)))}
\tkzFctPolar[domain=-pi:pi,fill=green!\n!white]{%
sqrt(cos(2*t)+sqrt(\i+sin(2*t)*sin(2*t)))}
}
\end{tikzpicture}
\end{document}
答案2
极坐标似乎是绘制以角度为参数的曲线图的好方法。半径可以用维基百科文章。
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[
x=2cm,
y=2cm,
]
\def\samples{180}
\def\c{1}
\pgfmathsetmacro\cc{\c*\c}
\pgfmathsetmacro\cccc{\cc*\cc}
\def\a{1.01}
\foreach\a in {1.001, 1.01, 1.05, 1.1, 1.3, 1.6, 2, 2.5, 3} {
\pgfmathsetmacro\aa{\a*\a}
\pgfmathsetmacro\aaaa{\aa*\aa}
\pgfmathsetmacro\aaaaMcccc{\aaaa - \cccc}
\draw
plot[
variable=\t,
domain=0:360-1/\samples,
samples=\samples,
smooth cycle,
]
(\t:{\cc*sqrt(\cc*cos(2*\t) + sqrt(\cccc*cos(2*\t)*cos(2*\t) + \aaaaMcccc))})
;
}
\path plot[mark=x] coordinates { (-\c, 0) (\c, 0) };
\end{tikzpicture}
\end{document}
角度为\t
,焦点可配置为\c
。示例显示了 不同 值的曲线\a
。
双纽线
在这种情况下\a
等于\c
,这简化了公式。由于角度现在是不连续的,曲线分为两部分绘制,首先是右侧,然后是左侧。还显示了填充。
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[
x=2cm,
y=2cm,
]
\def\samples{100}
\def\c{1}
\pgfmathsetmacro\cc{\c*\c}
\pgfmathsetmacro\cccc{\cc*\cc}
\def\a{1.01}
\draw[fill=green!50!white]
(0, 0) --
plot[
variable=\t,
domain=-45+1/\samples:45-1/\samples,
samples=\samples,
smooth,
]
(\t:{\cc*sqrt(\cc*cos(2*\t) + \cc*cos(2*\t))})
-- cycle
;
\draw[fill=green!50!white]
(0, 0) --
plot[
variable=\t,
domain=180-45+1/\samples:180+45-1/\samples,
samples=\samples,
smooth,
]
(\t:{\cc*sqrt(\cc*cos(2*\t) + \cc*cos(2*\t))})
-- cycle
;
\path plot[mark=x] coordinates { (-\c, 0) (\c, 0) };
\end{tikzpicture}
\end{document}
答案3
使用 运行xelatex
。它使用隐式定义的函数以及变量\rA
和\rC
。
\documentclass[a4paper]{article}
\usepackage{pst-func}
\begin{document}
\psset{unit=2}
\begin{pspicture}(-2.5,-2.5)(2.5,2.5)
\psaxes[labels=none,Dx=0.5,Dy=0.5,ticksize=-3pt 3pt]{->}(0,0)(-2,-2)(2,2)[$x$,-90][$y$,0]
\def\rC{1}
\pgfforeach \rA in {0,0.2,...,1.6}{%
\psplotImp[linewidth=1pt,algebraic,linecolor=blue!60]%
(-3,-3)(3,3){(x^2+y^2)^2-2*\rC^2*(x^2-y^2)-\rA^4+\rC^4}}
\end{pspicture}
\begin{pspicture}(-2.5,-2.5)(2.5,2.5)
\psaxes[labels=none,Dx=0.5,Dy=0.5,ticksize=-3pt 3pt]{->}(0,0)(-2,-2)(2,2)[$x$,-90][$y$,0]
\def\rC{2}
\pgfforeach \rA in {0,0.2,...,2.4}{%
\psplotImp[linewidth=1pt,algebraic,linecolor=red!60]%
(-3,-3)(3,3){(x^2+y^2)^2-2*\rC^2*(x^2-y^2)-\rA^4+\rC^4}}
\end{pspicture}
\end{document}