使用TikZ绘制了三条曲线,其中幂函数曲线与椭圆曲线相交的部分能看出有拼合的痕迹,请问有办法消除这种拼合痕迹吗?
整体图像:
\documentclass[tikz,border=10pt]{standalone}
\begin{document}
\begin{tikzpicture}[scale=0.5]
\draw[domain=0:8, smooth, variable=\x] plot ({\x}, {1/16*pow(\x, 2)});
\draw[domain=0:8, smooth, variable=\x] plot ({\x}, {-1/16*pow(\x, 2)});
\draw (8,0) ellipse (0.4cm and 3.9925cm);
\end{tikzpicture}
\end{document}
有的,考虑line cap=round
和line join=round
命令(可以texdoc tikz
搜索)。
终于找到有人和我一样放大5000%倍pdf欣赏自己的TiKZpicture的了(握手)
\documentclass[tikz,border=10pt]{standalone}
\begin{document}
\begin{tikzpicture}[scale=.5,line cap=round,line join=round]
\draw[domain=0:8, smooth, variable=\x] plot ({\x}, {1/16*pow(\x, 2)});
\draw[domain=0:8, smooth, variable=\x] plot ({\x}, {-1/16*pow(\x, 2)});
\draw (8,0) ellipse (.4cm and 4cm);
\end{tikzpicture}%但我感觉还是差点意思
%如果不是完全追求 精确的函数关系的话
%可以试试控制点(?)
\begin{tikzpicture}[scale=.5,line cap=round,line join=round]
\draw (0,0) .. controls (4,-.3) and (6,-2.3) .. (7.958,-3.98);
\draw (0,0) .. controls (4,.3) and (6,2.3) .. (7.958,3.98);
\draw (8,0) ellipse (.4 and 4);
\end{tikzpicture}
%不过代码似乎也不够优雅...
\end{document}
如果是精确的两条直线分别连接了同一个点的话,前面的round
命令可以自动让这一切保持圆滑,但题主的问题中幂函数和椭圆方程在数学上似乎本身就是相交的,这也许是导致出现需要微调的原因(?)
或者你可以用 parabola
路径绘制抛物线,然后在同一条路径中绘制椭圆弧,然后再绘制抛物线返回原点,这样效果或许会更好些.
这个 solution 的方案见最下方代码的上半部分的 tikzpicture
环境
添加 line cap = round
,然后根据你画的抛物线 1/16*pow(8, 2)
,那么切点坐标是 8^2/16 = 4
,那么椭圆的半长州值我也给你改了改,拼合痕迹没了.
但是还是会相交一点,这个问题是数学问题,俾人数学能力有限,你可以请教下数学方面的同学(比如改用别的曲线)
\documentclass[tikz, border = 10pt]{standalone}
\begin{document}
\begin{tikzpicture}[scale = .5]
\draw (8,0) ellipse (.4 and 4);
\draw [ line join = round ] (0,0) parabola (8,4) arc (90:-90:.4 and 4) parabola bend (0,0) (0,0) -- cycle;
\end{tikzpicture}
\begin{tikzpicture}[scale = .5]
\draw[domain=0:8, smooth, variable=\x, line cap = round] plot ({\x}, {1/16*pow(\x, 2)});
\draw[domain=0:8, smooth, variable=\x, line cap = round] plot ({\x}, {-1/16*pow(\x, 2)});
\draw (8,0) ellipse (.4 and 4);
\end{tikzpicture}
\end{document}
非常感谢!我本意确实是想要绘制这种图形,之前采用的函数式都是绘制的手段。您的方法确实比用函数式要更好。