gnuplot: как сделать линии между точками дугой

У меня есть данные точек в цилиндрических координатах. Могу ли я сделать их дуги, как здесь. Теперь линии выглядят так

2 ответа

Решение

Чтобы сделать это с файлом данных, вы можете использовать set dgrid3d и set table выход. Данные, которые у вас есть, выглядят так:

set pm3d
splot "data" u ($1*cos($2)):($1*sin($2)):3 w l

введите описание изображения здесь

Вы можете сделать интерполяцию с set dgrid3d улучшить разрешение:

set dgrid3d splines 20,20
set table "table"
splot "data" u 1:(acos(cos($2))):3

Теперь ваши уточненные данные сетки сохраняются в файле "таблица". Примечание. Я отправил переменную угла обратно в интервал от 0 до pi, чтобы улучшить интерполяцию. Важно использовать splines опция, иначе ваши данные будут интерполированы с использованием всех точек данных, а не только соседних. Разместите эти новые данные:

set pm3d
splot "table" u ($1*cos($2)):($1*sin($2)):3 w l

введите описание изображения здесь

Больше данных означает, что прямые линии выглядят менее прямыми, потому что их больше. Вам не нужно использовать опцию интерполяции с set pm3dПросто настройте количество сканов set dgrid3d вариант.

Я думаю, вы можете поиграть с количеством сэмплов, чтобы создать впечатление, что дуги рисуются. Например:

set parametric
set samples 10,10
set zrange [0:1]
set urange [0:2*pi]
set vrange [0:2*pi]
splot cos(u)*cos(v),cos(u)*sin(v),cos(u)

Дает следующий график:

Теперь, если вы измените образцы с помощью

set samples 10,100

Вы получаете "дуги", которые являются просто более прямыми линиями:

Если вы хотите больше линий поверхности, поиграйте немного с set isosamples опция:

set isosamples 20,20

Другие вопросы по тегам