среда, 6 июля 2011 г.

Рисуем как в Logo (функция drw v.001 для pixilang 3.0)


По просьбе Михаила Разуваева (одного из создателей pixilang) выкладываю 001, еще сыроватую и пока не полную по функционалу, версию функции drw(). Пока нечто путнее нарисовать с её помощью проблематично, но поиграть с ней уже можно =)

Цель функции: рисовать в pixilang 3.0rc1  как в языке программирования Logo.
Система координат: обычная для 2D рисования. Точка с координатами 0,0 находится в верхнем-левом углу pixilang-экрана.
Особенности: в функции используются имена переменных и функций с префиксом drw_ поэтому для нормальной работы ф-и в программе лучше не использовать переменные с таким префиксом.
Аргументы функции: аргумент один - текстовый контейнер с графическими командами и их параметрами. Команды с параметрами можно разделять пробелами (можно и не разделять), но использовать символ "ввод" в строке пока нельзя (это в планах). Вы можете делать сколько угодно таких строк с командами рисования и вызывать их drw ( имя_строки ), при отрисовке очередной строчки. В качестве аргументов для команд используются только положительные числа. Последняя позиция пера, его тип, угол и цвет сохраняются до следующего вызова ф-и.
Реализованные команды:
Операнды (только для понимания)
тип операнда:
n        integer
fl        float

Команды:
мнемоника                    описание                                           
pos n,n                  перенести перо в позицию n,n
                             (угол поворота пера при этом станет  равным 0.0)    
p   n                      задать тип пера: 0 прозрачное ( без следа),
                            1 простое ( тонкая линия 1 пиксель )
cl  n,n,n                 задать цвет пера r,g,b                                  
f   n                       рисовать вперед линию в n пикселей                      
сw    fl                   поворот по часовой стрелке на угол fl в градусах                      
сcw    fl                 поворот против часовой стрелки
sc  fl                      масштаб ( scale factor ) 1.0 = 100%
                             ( длина линий = длина * scale factor )   
Параметры по умолчанию: тип пера = 1, координаты пера  =  0,0
угол поворота пера = 0.0 (линия слева-направо), цвет пера =белый

Пример использования функции в программе: 
include "libs/drawlib.pixi"
drw_once = 0 //for once drawlib variables definition
//-------------------------------------------------------
test = "f100"
drw ( test )
frame ( 3000 )   

Брать библиотечку с примерами прошу здесь: скачать с Яндекс - народа

В планах:
Добавить команды:
rep n(...)                n раз повторить последовательность, ограниченную ()
ret (...)                   вернуть значения угла и координат после выполнения
                             действий в ()
Сделать:
-обработку ошибок текстовой строки с командами
-возможность разрывать (переносить) строку символом "ввод"
-возможность использование в строке команд в качестве аргументов определенных числовых переменных языка pixilang.

В "дальних" планах:
-закрашивание замкнутого контура
-градиентное закрашивание замкнутого контура

Комментариев нет:

Отправить комментарий