Поскольку ваша форма имеет вертикальные касательные, она не может быть записана как z=f(x,y)
, поэтому splot <function>
не может быть использована. Тем не менее, вы можете построить данные из файла, см., Например, решение для построения кубов: http://www.gnuplotting.org/plotting-cubes/
Чтобы использовать gnuplot для генерации самих данных, вы можете использовать псевдофайл "++" и модификаторы, вот как построить цилиндр:
splot [-1:1][-1:1][0:1] '++' u (cos(pi*$1)):(sin(pi*$1)):($2) w lines
Для построения верхней поверхности вы можете использовать тот же трюк:
replot '++' u ($2*cos(pi*$1)):($2*sin(pi*$1)):1 w lines
Для вашей точной формы необходимы незначительные изменения. Я советую вам определить функции для вычисления координат x и y, их можно использовать GPVAL_X_MIN
и совместно. для нормализации переменных $1
и $2
в соответствующем диапазоне независимо от диапазонов построения.