用Mathematica旋转3D图形——ViewPoint用法
来源:网络收集 点击: 时间:2024-02-13ViewPoint,直译为观察点,Graphics3D表示你观察3D图形的坐标位于{a,b,c}。
举个例子:
ContourPlot3D
此时的观察点位于{0, 0, 1}处。

如果把不同位置观察到的3D图形放到一起,就会呈现3D图形的旋转效果。举例如下:
Animate, Sin, 0}, Axes - False,{t,o, 2 Pi}]
而观察点所经过的路径是:
ParametricPlot3D,Sin, 0}, {t, 0, 2 Pi}]。
奇怪的是,3D图形旋转的时候很不稳定,忽远忽近。


这里引进一个选项——SphericalRegion,直译为球形区域,作用是把被观察的图形限制在一个球形区域内部,可以解决上面那个3D图形“突突乱跳”的现象。注意,SphericalRegion - True是紧跟在ViewPoint选项后面的!
Animate, Sin, o},SphericalRegion - True,
Axes - False], {t, 0, 2 Pi}]
然后发现,整个图形变大了,以至于我们不能够完整地看到全图,这是因为我们距离图形太近了。

“不识庐山真面目,只缘身在此山中”!
所以,我们可以把观察点的位置拉远一点,这样就可以观察3D图形的整体了:
Animate, Sin, 0}, SphericalRegion - True,
Axes - False,], {t, 0, 2 Pi}]
我们把观察点的距离拉远了3倍,效果如下图。


感觉这种旋转之下,我们不能看到图形的各个角度的不同情形。我们希望3D图形全方位旋转,上下、左右、前后都有。
这就要从观察点的路径着眼了,观察路径要足够的复杂。我们用如下的观察路径:
ParametricPlot3d Sin, Cos2, Sin}, {t, 0, 2 Pi}]

用这个路径来试试:
Animate Sin, Cos^2, Sin},
SphericalRegion - True,Axes - False], {t, 0, 2 Pi}]
再把距离拉远5倍:
AnimateSin, Cos^2, Sin},
SphericalRegion - True, Axes - False], {t, 0, 2 Pi}]


最后,来一个精彩示例,绘制旋转的3D彩色图形,并且把边框、网格线都去掉,适当的拉近观察距离:
Animate Sin, Cos^2, Sin},
SphericalRegion - True, Axes - False, Boxed - False,
Mesh - None, ColorFunction - Function]],
{t, 0, 2 Pi}]
结果如图。

ViewPoint的用法,官方讲的太笼统,有很多细节问题都没有解答。
我也是在兴趣小组里提问,才得到的答案,感谢“Mathematica交流超级群”诸友的悉心指导,尤其感谢“无影东瓜”。
SphericalRegion的内容见官网,虽然不详细,但如果你参考它的字面意思“球形区域”,就容易多了!
版权声明:
1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。
2、本站仅提供信息发布平台,不承担相关法律责任。
3、若侵犯您的版权或隐私,请联系本站管理员删除。
4、文章链接:http://www.1haoku.cn/art_38916.html