Mathematica 9 is now available

2.9.10 三维图形的坐标系

Mathematica 画三维图形时,总要在外边加一个立方盒. 在默认设置 Boxed->True下,Mathematica 明显画出这个盒子,Mathematica 一般 自动擦去该立方盒之外的任何对象.
选项 PlotRange 指出立方盒应该包括范围的  坐标. 与二维相同, 默认设置是 PlotRange->Automatic,它令Mathematica 用内部算法尽量 包含图形有意义的部分,而擦掉外围部分,PlotRange->AllMathematica 包含所有部分.

调入一个包含各种多面体的程序包

这里产生一个星状的 20 面体

星状 20 面体画在立方盒中

使用 PlotRange 这一设置,这个 20 面体的许多部分位于立方盒之外,所以被擦去

与二维情况类似,可以用原始坐标或尺度坐标在三维对象中确定元素的位置. 尺度坐标由 Scaled[ sx, sy, sz ] 给出,每一个方向的变化范围是从 0 到 1. 坐标系在盒子上为右手系.

三维对象的坐标系

在立方盒的一个顶点上放一个立方体

在指出各种图形基元应放在盒子内的什么位置后,就要告诉 Mathematica 怎样画出盒子. 第一步是确定盒子的形状,这与确定二维 图形的纵横比类似.在三维情形中,用选项 BoxRatios 指定盒子边长的比例. 对 Graphics3D 对象,默认BoxRatios->Automatic, 它使得盒子的形状根据内容的坐标范围来确定.

指定三维对象边界盒的形状

在一个高盒子中显示 20 面多面体

产生三维图像时,必须告诉 Mathematica 从哪一个方位来观察对象,这需要使用 ViewPoint 选项. 在前面已经给出了这个选项的常用设置,一般可让 Mathematica 取盒子外 的任何一个视点. 视点用 ViewPoint ->  sx, sy, sz  的值用一个特殊的坐标系 给出,坐标系的原点在盒子的中心,坐标的刻度是将盒子最长的一个边 作为一个单位来度量,盒子的其它边长由可选项 BoxRatios 的设置确定.对 一个正立方盒子而言,每个边的坐标都是从 -1/21/2 变化. 要注意视点总在盒子之外.

用默认视点 {1.3, -2.4, 2} 产生一个图形

这是视点接近盒子的一个顶点时得到的图形

当离盒子较远时,透视效果变小

三维对象的位置和定向设置

在建立三维图形时,除指定视点外,还要指定如何给最终图形加边框,这用选项 ViewCenterViewVertical 来实现.
ViewCenter 决定对象的哪一点出现在最终图形的中心,这一点由各方向 盒子的边从 0 到 1 变化的尺度坐标确定. 用ViewCenter->{1/2,1/2,1/2} 时,盒子的中心将出现在最终图形的中心. 由于不同视点的选择, 盒子不一定对移,盒子的中心不一定在最终图形的中心. 可以用 ViewCenter->Automatic 使盒子中心在最终图形区域的中心.
ViewVertical 指定对象的哪一个方位应该在最终图形中指向上方. ViewVertical 设置用尺度坐标指出哪一个方向应该在最终图形上竖直 向上. 默认设置 ViewVertical->{0,0,1} 使得原始坐标的 方向在 最终图形上总是竖直向上.

ViewCenter 的这种设置时,盒子的一个顶点放在图形的中心

ViewVertical 的这种设置使盒子的 轴方向在图形上竖直向上

设置可选项 ViewPoint, ViewCenterViewVertical 也就是确定怎 样 观察一个物理的对象: ViewPoint 确定头的位置,ViewCenter 确定朝向哪儿看,ViewVertical 确定头向上的方式.
用坐标系的术语来说,设置 ViewPoint, ViewCenterViewVertical 就是确定如何把盒子上的三维坐标转换为最终显示 区域中图形的坐标.
出于某些目的,将最终显示区域中的坐标想象成三维是很有用的.  轴指向纸内.在这种"显示坐标系中" 指定的位置当变化 ViewPoint 等时维持不变.下一节将讨论的光源位置就是 按这种显示坐标系确定的.

三维图形的坐标系

当获得了三维对象的二维映象后,就产生了如何生成图象的问题,这与 二维图形中的问题相同. 例如,可以通过改变纵横比来修改图形的最终形状, 通过设置选项 PlotRegion 来指定图形的整个显示区域.

这里修改了最终图形的纵横比

Mathematica 通常缩放三维对象的图形,使其在给定的显示区域中尽可能大. 尽管在大部分情况下这正是所需要的,但会产生一个所画出的三维对象的尺 寸会随着定位不同而变化的结果.可以通过设置选项 SphericalRegion->True 来避免这种变化. 在这种设置下,Mathematica 在三维边界盒子旬侧放一个球面, 并调整最后的图形使得整个球面在所指定的显示区域之内. 这个球面的中心与边 界盒子的中心重合,并且恰好把边界盒子放在球面内.

这里画出了拉得相当长的一个图形

使用 SphericalRegion->True,调整最后的图像使得边界盒外的球面整个落在显示区域内

通过设置 SphericalRegion->True 可以使一个对象的调整和这个对象的所有 定位相一致,这对产生同一对象不同定位的动态序列是很有用的.

三维图像的伸缩



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.