Вы можете делать подобные вещи с gnuplot. Конечно, gnuplot должен знать координаты начальной и конечной точек линий, поэтому вам нужно как-то их вычислить. Что-то вроде приведенного ниже кода: вы записываете координаты в блок данных и наносите его на карту with vectors
, также отметьте help vectors
. График создан с помощью gnuplot 5.2.8.
Код:
### vector plot similar to turtle graphics
reset session
set size square
set angle degrees
x0 = 0
y0 = 0
a0 = 0
r0 = 10
set print $Data
do for [i=1:36] {
a0 = a0 - 10
do for [j=1:2] {
print sprintf("%g %g %g %g",x0,y0,x0=x0+r0*cos(a0),y0=y0+r0*sin(a0))
a0 = a0 - 90
}
}
set print
plot $Data u 1:2:($3-$1):($4-$2) w vectors nohead notitle
### end of code
Результат:
Дополнение:
Кстати: нельзя ли на самом деле упростить эту команду turtle graphi c до?
repeat 36 [fd 100 rt 110]
Да, как показывает @Friedrich, это можно сделать без блока данных. Вот модифицированная версия моего первого выстрела без модуля %
. Пятый столбец, т. Е. (x0=x0+r*cos(a),y0=y0+r*sin(a),a=a-110)
, используется не для построения графика, а только для расчета.
Код:
### vector plot similar to turtle graphics
reset session
set size square
set angle degrees
set xrange[-2:12]
set yrange[-10:4]
r = 10
set samples 36
plot a=x0=y0=0 '+' u (x0):(y0):(r*cos(a)):(r*sin(a)): \
(x0=x0+r*cos(a),y0=y0+r*sin(a),a=a-110) w vec nohead not
### end of code
Результат: (аналогично графику выше)