2016 - 2024

感恩一路有你

用Mathematica绘制球面曲线

浏览量:1983 时间:2024-01-27 16:01:04 作者:采采

任何曲面与球面的交线,都是球面曲线。前面,我们用ViewPoint实现了对3D曲面的多角度旋转观察——参考《用Mathematica旋转3D图形——ViewPoint用法》。文中提到,观察点的轨迹是一条曲线。

如果观察点的轨迹曲线是一条球面曲线,把3D图形置于球面球心位置,就可以获得稳定的动态图。所以,我们渴望获得全方位的多角度观察,就要采用相应的多角度全方位的球面曲线。

先画球面

这里以单位球面为例,可以有三种画法:

1. ParametricPlot3D[Sin[u] Cos[v], Sin[u] Sin[v], Cos[u]}, {u, 0, 2 Pi}, {v, 0, Pi}]

2. SphericalPlot3D[1, {x, 0, Pi}, {y, 0, 2 Pi}]

3. ContourPlot3D[x^2 y^2 z^2 1, {x, -1.1, 1.1}, {y, -1.1, 1.1}, {z, -1.1, 1.1}]

可以看到,三种方法画出的单位球面的网格线有明显的不同。

绘制球面和柱面交在一起的情形

其中,柱面的直径长度是球半径的长度,柱面的一条母线过球心。为了方便计算,把球半径设为2。

球面的方程是:x^2 y^2 z^2 2^2, {x, -2.1, 2.1}, {y, -2.1, 2.1}, {z, -2.1, 2.1}

柱面的方程是:(x - 1)^2 y^2 1, {x, -2.1, 2.1}, {y, -2.1, 2.1}, {z, -2.1, 2.1}

绘制Viviani曲线

再来绘制著名的Viviani曲线——音译为“维维亚尼”曲线。在网上找到一个例子,照葫芦画瓢。结果感觉很不满意!

在Mathematica智囊团里面,群友告诉我,原因是图片精度不够高的缘故,并提供了以下代码。结果很好!我在这里表示感谢!

更简洁的代码

网友还给出一个更简洁的代码,用BoundaryStyle来画两个曲面的相交线,用Tube把相交线画成“管状”。

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。