gnuplot:在球体表面绘制函数
gnuplot: Plotting a function on the surface of a sphere
我有一个函数,比方说 f(theta, phi) = sqrt(1 - (sin(theta)*sin(phi))**2) + 5 * sqrt(1 - (sin(theta)*cos(phi))**2)
,我想在球体表面绘制为彩色图。但是,如果不首先在 table.
中生成具有适当值的文件,我无法弄清楚如何将此函数提供给 splot
以实现此目的
我怎样才能 gnuplot
做到这一点?
您可以使用特殊的文件名“++”代替生成文件,参见help special
。我认为 gnuplot demo page 上的最后一个示例有您的用例。经过细微修改的简化:
xx(u, v) = cos(v) * cos(u)
yy(u, v) = cos(v) * sin(u)
zz(u, v) = sin(v)
f(theta, phi) = sqrt(1 - (sin(theta)*sin(phi))**2) + 5 * sqrt(1 - (sin(theta)*cos(phi))**2)
set parametric
set isosamples 121, 61
set samples 121, 61
set urange [-pi:pi]
set vrange [-pi/2:pi/2]
set border 4095
set view equal xyz
set xyplane 0
splot "++" using (xx(,)):(yy(,)):(zz(,)):(f(,)) with pm3d notitle
这是结果:
请仔细检查球坐标定义是否匹配。
我有一个函数,比方说 f(theta, phi) = sqrt(1 - (sin(theta)*sin(phi))**2) + 5 * sqrt(1 - (sin(theta)*cos(phi))**2)
,我想在球体表面绘制为彩色图。但是,如果不首先在 table.
splot
以实现此目的
我怎样才能 gnuplot
做到这一点?
您可以使用特殊的文件名“++”代替生成文件,参见help special
。我认为 gnuplot demo page 上的最后一个示例有您的用例。经过细微修改的简化:
xx(u, v) = cos(v) * cos(u)
yy(u, v) = cos(v) * sin(u)
zz(u, v) = sin(v)
f(theta, phi) = sqrt(1 - (sin(theta)*sin(phi))**2) + 5 * sqrt(1 - (sin(theta)*cos(phi))**2)
set parametric
set isosamples 121, 61
set samples 121, 61
set urange [-pi:pi]
set vrange [-pi/2:pi/2]
set border 4095
set view equal xyz
set xyplane 0
splot "++" using (xx(,)):(yy(,)):(zz(,)):(f(,)) with pm3d notitle
这是结果:
请仔细检查球坐标定义是否匹配。