plot - gnuplot:在球体表面上绘制函数
问题描述
我有一个功能,说f(theta, phi) = sqrt(1 - (sin(theta)*sin(phi))**2) + 5 * sqrt(1 - (sin(theta)*cos(phi))**2)
我想在球体表面绘制彩色图。但是,如果不首先在表中生成具有适当值的文件,我无法弄清楚我必须如何输入这个函数splot
才能实现这一点。
我怎样才能gnuplot
做到这一点?
解决方案
您可以使用特殊文件名“++”,而不是生成文件,请参阅help special
. 我认为gnuplot 演示页面上的最后一个示例有您的用例。通过少量修改进行简化:
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($1,$2)):(yy($1,$2)):(zz($1,$2)):(f($1,$2)) with pm3d notitle
这是结果:
请仔细检查球坐标的定义是否匹配。
推荐阅读
- oracle - 为什么 Alter Table 在 Java 中不能使用 executeQuery() 工作?
- python - 将具有数字和名称的列拆分为两个不同的列“ID”和“名称”
- r - 在 R 4.0 中执行 NA 替换时出错
- python - render() 在pygame中没有关键字参数错误
- spring-webflux - 当反应式存储库返回结果以及为空时运行逻辑?
- javascript - Javascript 复制功能不适用于隐藏的输入类型
- mysql - MySQL SUBSTR LOCATE 多搜索字符串
- regex - 验证我的 repo 它实际上是 Go 中的 github repo URL
- windows - 使用蜂窝热点时,npm 无法访问 Internet
- javascript - JavaScript 函数:成绩分布