我正在寻找一种简单的方法来绘制(最好使用TikZ
)一个带有平面的圆锥体,以便向我的学生展示椭圆的来源。这是我担任高中老师的第一年,由于今年在家授课是常态,所以我想制作精美的图像以用于教材中,而不仅仅是编写方程式并告诉他们这些东西的来源。
我读过了: 绘制四个圆锥截面
还: 如何用 TikZ 绘制一个具有高度和半径的简单圆锥体?
尝试更好地理解和阐述一种方法,但我一开始就陷入了困境。我发现我不仅不能创造形象,我也不会理解这些帖子的答案。
我正在使用该beamer
课程,但将来我也希望能够在工作表上使用这些绘图。我还咨询了其他网站,它们似乎建议使用该pst-solides3d
软件包,但我也看到我不能使用它pdflatex
......
这是我目前拥有的代码(制作了一个粗糙的圆锥体,并决定了椭圆将出现在其上的点)。
\usepackage{pgfplots}
%\pgfplotsset{compat=1.3}
\pgfkeys{/pgf/number format/.cd,use comma}
\usepgfplotslibrary{fillbetween,statistics}
\usepackage{tikz,tikz-3dplot} %Para fazer desenhos
\usetikzlibrary{shapes.multipart,shapes.geometric,calc,angles,positioning,intersections,quotes,decorations,babel,patterns,fit,arrows.meta,backgrounds,shadings,matrix,through,trees,mindmap,3d}
这是我的前言。现在,在 的一个框架中beamer
,我有:
\begin{tikzpicture}
%The Cone
\draw [dashed] (-1,0) arc (170:10:1.01 and 0.4) -- (1,0);
\draw (-1,0) -- (0,3) -- (1,0) arc(-10:-170:1.01 and 0.4) --cycle;
%The Ellipse's starting and end points
\path (-1,0) -- (0,3) coordinate [near end] (A);
\path (0,3) -- (1,0) coordinate [midway] (B);
\end{tikzpicture}
下面是我要尝试制作的图像。它不需要有颜色(对我来说,只有“线框”就足够了,尽管我很乐意为椭圆添加颜色,以便使其更清晰)。
有没有更简单的方法来实现预期结果?如果可能的话,请解释一下这些步骤,这样我就不会只是复制粘贴,而是可以学习 :-)
提前致谢!
答案1
这不是对你问题的回答,但我想说的是,使用 绘制漂亮的图像很耗时TikZ
,不过有一款不错的软件可以实现这一点,那就是GeoGebra
。只需点击几下鼠标,它就可以绘制更多、漂亮、复杂和动画的图片。
无论如何,如果您想使用 进行绘制TiKz
,常见的技巧是,首先您应该对相交椭圆方程进行一些微积分(如果没关系,请选择任意椭圆)并分三步绘制形状:
- 首先是圆锥体的下部,然后
opacity=0.5
用和绘制平面- 最后画出圆锥体的上方部分。
对于圆形截面来说,绘制起来比较容易,但在其他情况下,绘制起来就比较复杂。
简单示例:
\documentclass[border=10pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset{width=7cm,compat=1.8}
\begin{document}
\begin{tikzpicture}
\begin{axis}[view={20}{40},hide axis, domain=0:1,
y domain=-1:1, xmin=-1.5, xmax=1.5,
ymin=-1.5, ymax=1.5, zmin=0.0]%
\addplot3[surf, domain=0:0.85, domain y=-1:1,
mesh/interior colormap=
{blueblack}{color=(black) color=(blue)},
colormap/blackwhite,
samples=20,
samples y=40,
z buffer=sort,]
({x*cos(deg((y+1)*pi))},{x*sin(deg((y+1)*pi))},{x});
\addplot3 [surf,domain=-.5:1.2, domain y=-1.5:1,samples=2, samples y=2,opacity=0.5]({x},{y},{.85});
\addplot3[surf, domain=0.85:1, domain y=-1:1,
mesh/interior colormap=
{blueblack}{color=(black) color=(blue)},
colormap/blackwhite,
samples=20,
samples y=40,
z buffer=sort,]
({x*cos(deg((y+1)*pi))},{x*sin(deg((y+1)*pi))},{x});
%
\end{axis}
\end{tikzpicture}
\end{document}
输出: