Mathematica 9 is now available

2.9.11 画三维曲面

给出适当的图形基元列表后,基本上就可以用 Graphics3D 来表示任何三维对象. 通过明确给出边界相连的多边形集合就可用 Graphics3D 表示三维曲面.
如果要表示能折叠和自相交的任意曲面时,只有 Graphics3D 用一组多边形才能 实现, 这与 ParametricPlot3D 所做的相同.
但在很多情况下仅涉及到简单曲面,例如,Plot3DListPlot3D 产生无折叠, 且在每个  处高度有限的曲面. Mathematica 中这类简单曲面的表示不需要 给出多边形集合,而需要给出在每个 网格处  高度的集合. 图形对象SurfaceGraphics[array] 表示用这种方式构造的曲面.

三维图形对象

这里是一个 4x4 数值阵列

用这个阵列去给出曲面上每个点的高度

Plot3DListPlot3D 都通过产生 SurfaceGraphics 对象来工作.

曲面表示的转换

Graphics3D 用到一个 SurfaceGraphics 对象时,Mathematica 就产生一个 Graphics3D 对象,它明显含有一组用SurfaceGraphics 对象表示曲面的多边形. 当 Mathematica 将两个 SurfaceGraphics 对象结合在一起时,就自动把它们俩转换 为 Graphics3D 对象.

这是由 SurfaceGraphics 对象表示的一个曲面

这里是另一个曲面

通过把这两者转换为含有一组多边形的 Graphics3D 对象,Mathematica 将这两个曲面显示在一起

曲面图中的网格选项

SurfaceGraphics 产生曲面时,默认情况是曲面上画出矩形网格,该网格使曲面的 形状清楚易见. 可以用选项设置Mesh -> False 消除网格,也可以在图形指令集合中用选项 MeshStyle 去指定网格线的宽度, 颜色和其它特性.
SurfaceGraphics 对象含有确定 网格点处曲面高度值的 一个阵列. 选项 MeshRange 确定网格中原始  坐标的范围. Plot3D[f,  x, xmin, xmax ,  y, ymin, ymax ] 产生一个 SurfaceGraphics 对象,而设置 是自动产生的. MeshRange 在曲面图的  坐标轴标记中使用,它也 在将 SurfaceGraphics 对象转化为 Graphics3D 对象的多边形集合的过程中 产生多边形的坐标.

ClipFill 选项设置

选项 PlotRangeSurfaceGraphics 的应用与在 Mathematica 其它图形对象中的 应用相同. 曲面位于 PlotRange 定义的坐标范围之外的部分都会被擦掉. ClipFill 选项指出怎样处理被擦掉部分的曲面.

这是顶部和底部曲面被擦掉的三维图形. 用 ClipFill 的默认设置,被擦掉的部分好像在曲面上一样被显示出来

使用 ClipFill->None 后,曲面上擦掉的部分被除去,所以能从曲面看过去. 当作图的函数值不是实际数值时,Mathematica 就略去对应部分的曲面

将底部擦去的部分定义为白色,顶部擦去部分定义为黑色

Mathematica 画一个曲面时,不仅要知道各点的高度,而且也要知道各点的颜色. 在默认设置Lighting->True下,Mathematica 用模拟亮度模型给曲面着色,而在设置 Lighting->False 时,Mathematica 用一个 "颜色函数" 给曲面着色.
默认的颜色函数将曲面的高度函数标准化为 0 和 1 内变化的值,并按对应于 高度的灰度值给曲面的每一部分着色. 有两种方式去改变这一默认情况.
第一种是设置 ColorFunction -> cMathematica 就把函数 作用于 每点的高度去确定该点的颜色. 例如用ColorFunction->Hue 时, Mathematica 就用一个范围的色彩给曲面着色.

指定曲面着色函数

Lighting->False 时,默认用由高度确定的灰度值给曲面着色

这里定义了一个函数,它将值的变化范围映射为黑和白

用黑白条显示曲面

改变曲面默认着色的第二个途径是与高度阵列一起再用第二个阵列. ColorFunction 就会作用于这第二个阵列去找出所要使用的颜色指令. 在第二个阵列中,可以对曲面上每个点指定另一个坐标值.这个坐标值 将颜色画出,而不是用位置画出.
使用 Plot3D[ f, s , ... ] 能自动产生颜色值阵列,在 ListPlot3DSurfaceGraphics 中明确给出阵列时,要注意 nCrossn  ( n-1)Cross (n-1) 的颜色阵列. 其原因是高度是在网格点上 指定,而颜色是在网格块上指定.
当对 Plot3D, ListPlot3D 等使用第二个函数或阵列时, ColorFunction 的默认设置是 Automatic. 这意味着该函数或阵列必须明确 包含 GrayLevel RBGColor 等颜色指令. 而给出别的设置时,如 ColorFunction -> Hue , 该函数或阵列就产生数或其它数据,当由 ColorFunction 指定的函数被调用时,这些数或数据就转化为颜色指令.

指定曲面的颜色阵列

这里画出了灰度由 坐标确定的曲面

这里对每个网格块使用了随机灰度. 注意网格块阵列是 9x9,而网格点阵列是 10x10



Any questions about topics on this page? Click here to get an individual response.Buy NowMore Information
THIS IS DOCUMENTATION FOR AN OBSOLETE PRODUCT.
SEE THE DOCUMENTATION CENTER FOR THE LATEST INFORMATION.