gnuplot: построение функции на поверхности сферы - PullRequest
0 голосов
/ 22 сентября 2019

У меня есть функция, скажем, f(theta, phi) = sqrt(1 - (sin(theta)*sin(phi))**2) + 5 * sqrt(1 - (sin(theta)*cos(phi))**2), которую я хочу построить в виде цветного графика на поверхности сферы.Тем не менее, я не могу понять, как мне нужно передать эту функцию в splot, чтобы достичь этого без предварительного создания файла с соответствующими значениями в таблице.

Как я могу получить gnuplotсделать это?

1 Ответ

3 голосов
/ 22 сентября 2019

Вместо генерации файла вы можете использовать специальное имя файла "++", см. 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

Это результат:

colored sphere

Пожалуйста, дважды проверьте, соответствуют ли определения сферических координатматч.

...