三维图形基元

Mathematica 图形的强大功能之一是具有二维和三维的图形基元. 通过三维图形基元的结合,就可以在 Mathematica 中表示和生成三维图形对象.

Point[{x,y,z}]坐标为 xyz 的点
Line[{{x1,y1,z1},{x2,y2,z2},...}]通过点 、... 的折线
Polygon[{{x1,y1,z1},{x2,y2,z2},...}]
有给定顶点列表的填充的多边形
Cuboid[{xmin,ymin,zmin},{xmax,ymax,zmax}]
立方体
Arrow[{pt1,pt2}] 指向 的箭头
Text[expr,{x,y,z}]在位置 处的文本 (参见 "文本中的图形基元")

三维图形元素.

每运行一次 产生一个三维的随机坐标.
In[1]:=
Click for copyable input
在三维空间中产生了20个随机点.
In[2]:=
Click for copyable input
这是这些点的图形.
In[3]:=
Click for copyable input
Out[3]=
这里画出了在三维空间中通过10个随机点的线.
In[4]:=
Click for copyable input
Out[4]=

如果给出的是二维图形基元列表, Mathematica 就依次画出各个元素, 后面的元素遮蔽前面的元素. 而在三维的情况下Mathematica 将所给的图形元素综合在一起, 将它们显示为三维的图形对象,位置在前面的遮蔽位置在后面的元素.

每运行一次 , 就在三维空间中生成一个随机三角形.
In[5]:=
Click for copyable input
这里画出一个随机三角形.
In[6]:=
Click for copyable input
Out[6]=
这里一次画出了5个随机三角形. 前边的三角形遮蔽后边的三角形.
In[7]:=
Click for copyable input
Out[7]=

通过创建一个适当的多边形列表,可以在 Mathematica 中构造任何三维图形. 例如, 由 ParametricPlot3D 产生的所有曲面实际上就是用多边形列表来表示的.

Point[{pt1,pt2,...}] ... 等点组成的复点
Line[{line1,line2,...}] ... 等线组成的复线
Polygon[{poly1,poly2,...}] ... 等多面体组成的复多边形

可以同时取多个元素的基元.

与二维基元相同,一些三维图形基元可以使用多重坐标形式. 这是一种更有效的表示. 对于大量的基元,尽可能的使用多重坐标形式, 既可减少生成图形的内存,也可提高画图速度.

仅仅定义一个随机三角形的坐标.
In[8]:=
Click for copyable input
使用 Polygon 复合坐标系, 高效地表示出大量的三角形.
In[9]:=
Click for copyable input
Out[9]=

Mathematica 允许三维的多边形有任意数目的顶点并以任何形式排放. 根据顶点位置不同,产生的多边形可能会不共面或不是突多边形. 当画这些不共面的多边形时,Mathematica 会在画图前把多变形分成一个个平面三角形.

不共面多变形被分成三角形. 三角形间的交线不像 Polygon 基元的外侧边线那样画出.
In[10]:=
Click for copyable input
Out[10]=
自相交的非突多面体的填充是根据奇偶规则,在每个交叉点交互进行填充或不填充.
In[11]:=
Click for copyable input
Out[11]=
Cone[{{x1,y1,z1},{x2,y2,z2}}]底部以 为圆心,半径为1,顶点在 的圆锥体
Cone[{{x1,y1,z1},{x2,y2,z2}},r]半径为 r 的圆锥
Cuboid[{x,y,z}]对角坐标为 的单元立方体
Cuboid[{xmin,ymin,zmin},{xmax,ymax,zmax}]对角具有指定坐标的立方体 (长方体)
Cylinder[{{x1,y1,z1},{x2,y2,z2}}]端点坐标为 ,半径为 1 的圆柱体
Cylinder[{{x1,y1,z1},{x2,y2,z2}},r]半径为 r 的圆柱体
Sphere[{x,y,z}]圆心为 的单位圆
Sphere[{x,y,z},r]半径为 r 的球面
Tube[{{x1,y1,z1},{x2,y2,z2},...}]连接指定点的管
Tube[{{x1,y1,z1},{x2,y2,z2},...},r]半径为 r 的管

立方体图形元素.

这里画出三维空间中的一些随机单元立方体和单元球体.
In[12]:=
Click for copyable input
Out[12]=

尽管 ConeCylinderSphereTube 能画出高质量的图形, 它们的用途却是可以调整的. 一幅图像可以包含成千的基元. 在画这些图形基元时,可以通过一些特殊选项,改变默认设置下 ConeCylinderSphereTube 的点数, 从而提高画图效率. Graphics3D 中的 Method 选项用于降低每个圆锥的图像质量. 相似地,圆柱体、球体和管体的图像质量也可以分别通过 来调整.

由于圆柱体太小,减少绘制图形的点数基本上感觉不到有什么不同.
In[13]:=
Click for copyable input
Out[13]=
New to Mathematica? Find your learning path »
Have a question? Ask support »