vak: (Default)
[personal profile] vak
В середине 80-х в Дубне на БЭСМ-6 появился диковинный девайс: плоттер WX4675 фирмы Watanabe. Народ сбацал выдачу из библиотеки Графор непосредственно на этот плоттер. На симуляторе этот механизм удалось оживить. Берем самый первый пример из книжки по Графору:
*name графор
*call plotter:wx4675,direct
*ftn
program grafor
real x(100), y(100), z(100)
x(1) = -1.9
y(1) = sin(x(1))
z(1) = cos(x(1)) * 1.5
do 5 i=2,90
x(i) = x(i-1) + 0.1
y(i) = sin(x(i))
z(i) = cos(x(i)) * 1.5
5 continue
call page(15., 20., 'PAGE', 4, 1)
call limits(-2., 7., -1.5, 1.5)
call region(3., 3., 10., 15., 'REGION', 6, 1)
call axes('X axis', 6, 1., 5, 'Y axis', 6, 0.3, 4, 0)
call linemo(x, y, 85, 2, 10)
call broken(0.5, 0.2, 0.3, 0.2)
call brline(x, z, 85)
call endpg(0)
end
*execute
*end file
Запускаем, получаем рисунок:



А вот так выглядел сам плоттер.

Date: 2024-07-10 11:17 (UTC)
juan_gandhi: (Default)
From: [personal profile] juan_gandhi

Графор!!! Ох забытое слово...

Date: 2024-07-10 14:41 (UTC)
spamsink: (Default)
From: [personal profile] spamsink
И, главное, принтер, в сущности, почти постскриптовский. Для счастья нужно только moveto и lineto, остальное от лукавого.

Date: 2024-07-10 21:10 (UTC)
spamsink: (Default)
From: [personal profile] spamsink
Я к тому, что язык команд, по сравнению с тем же Калкомпом, высокого уровня. Никаких тебе "поднять перо/опустить перо", программисту не нужно вручную делать Брезенхама - по крайней мере, для отрезков - и т.п.

Date: 2024-07-10 23:38 (UTC)
spamsink: (Default)
From: [personal profile] spamsink
Самая базовая модель: https://i.sstatic.net/diJ3W.png
Что у Кобелева: https://i.sstatic.net/TSTlz.jpg

Date: 2024-07-11 08:11 (UTC)
spamsink: (Default)
From: [personal profile] spamsink
(Для информации прочих читателей)
Наш графор выдаёт команды для какой-то совсем базовой модели плоттера Calcomp:
нулевой байт в выдаваемом потоке не встречается; биты 5-0 отдельно друг от друга имеют значение движения на шаг в направлении +X, -X, +Y, -Y, поднять перо, опустить перо. По диагоналям двигаться можно; попытка одновременно двигаться и работать пером, или двигаться в противоположных направлениям, видимо, приведет к негарантийной поломке. После команд движения пера выдается 4 байта 0100 (т. е. с установленным битом 6) - это, видимо, явная пауза.