My favorites | Sign in
Project Home Downloads Wiki Issues Source
Search
for
apeirogon  
Apeirogon: new step in the development of the language.
Updated Dec 27, 2011 by a.michu...@gmail.com

Apeirogon

Apeirogon является логическим развитием проекта Scato. Пока Apeirogon находится в процессе развития. Проект размещается на этом же сайте.

Отличия от Scato

  • Язык
    • Унифицированы встроенные и пользовательские функции: теперь любой вызов возвращает результат. Это позволяет в большинстве случаев обойтись без временных переменных.
    • Унифицирована работа с графическим контекстом.
    • Расширен набор возможностей.
      • Добавлены средства отладки.
      • Средства создания анимированных роликов.
      • Средства работы с различными цветовыми схемами.
      • Расширен набор математических функций.
  • Реализация
    • Python 3.
    • Qt 4.
    • Всё сделано единым скриптом, что упрощает установку.

Требования к системе

  • Python 3
  • PyQt 4

Установка

Dowload

Программу можно взять из SVN:

svn co https://scato.googlecode.com/svn/branches/apeirogon

Если у вас нет возможности использовать SVN-клиент, то программу можно взять по ссылке:

http://scato.googlecode.com/svn/branches/apeirogon/apeirogon

Под Linux

Необходимо установить пакеты, Python3 и PyQt, после чего скрипт можно запускать.

Под Windows

Необходимые компоненты можно взять по ссылкам:

Файл с программой следует переименовать в apeirogon.py. После этого он будет запускаться как любое Windows-приложение.

Памятка

Краткая справка по командам.

Имя Аргументы Эффект Значение Комментарий
printEнет1.Вывод значения выражения на экран
dumpnнет1.Вывод на экран значения переменной, её имени и положения в коде программы
pause(нет)нет1.Выполнения программы останавливается до вмешательства пользователя
saveEнет1.Сохраняет текущее изображение в файл apeirogon-NNNNN.bmp
defn1 E2есть1.Создаётся функция с именем n1 и телом E2
callnнетП.В.Вызывается функция
ifE1 E2нет0.|П.В.Если E1, то выполняется E2
ifelseE1 E2 E3нетП.В.Если E1, то выполняется E2; в противном случае выполняется E3
repeatE1 E2нетП.В.E2 выполняется E1 раз
whileE1 E2нетП.В.E2 выполняется пока E1
localEисключёнП.В.Выражение выполняется в локальном контексте
setn1 E2n1 := E2E2Присваивает переменной заданное значение. При необходимости переменная создаётся
addn1 E2n1 := n1 + E2n1 + E2-
muln1 E2n1 := n1 * E2n1 * E2-
divn1 E2n1 := n1 / E2n1 / E2-
incrnn := n + 1n + 1-
decrnn := n * 1n * 1-
negnn := -n-n-
hsv2rgbE1 E2 E3 n4 n5 n6есть1.Значения трёх выражений интерпретируются как RGB-цвет; этот цвет переводится в HSV-схему и значения H, S, V присваиваются переменным
sumE1 E2нетE1 + E2-
diffE1 E2нетE1 - E2-
prodE1 E2нетE1 * E2-
fractE1 E2нетE1 / E2-
gtE1 E2нетE1 > E2-
ltE1 E2нетE1 < E2-
eqE1 E2нетE1 == E2-
neE1 E2нетE1 != E2-
minusEнет- E-
invEнет1 / E-
sqrtEнетsqrt(E)-
absEнет|E|-
signEнетsign(E)-
powE1 E2нетE1 ^ E2-
sinEнетsin(E)-
cosEнетcos(E)-
atan2E1 E2нетatan(E1/E2)ATAN2
seedEестьEУстанавливается начальное значение для датчика случайных чисел
rand(нет)естьRNDСлучайное число
time(нет)нетTIMEВремя
scaleEестьEМасштабирование системы координат
rightEесть$aПоворот вправо
leftEесть$aПоворот влево
colorE1 E2 E3есть1.Устанавливает цвет в формате RGB
mixcolorE1 E2 E3 E4есть1.Подмешивает к текущему цвет в формате RGB в заданной пропорции
widthEесть$wУстанавливает толщину линии
bgcolorE1 E2 E3есть1.Устанавливает цвет фона (существующее изображение стирается)
drawE1 E2есть1.Отрисовывает линию с заданным смещением
jumpE1 E2есть0.Перемещается на заданное смещение

Обозначения:

  • Ex -- выражения (которое может состоять просто из имени переменной)
  • nx -- имя переменной (строго)

Что ещё следует доделать

  • Сохранение и экспорт
  • Обработка параметров командной строки
    • Геометрия
    • Файл с программой
  • Обучающие и демонстрационные примеры кода
  • Возможность изменения размеров области рисования независимо от размеров окна
  • Интерактивный режим

Направление развития

  • Следует подумать о переносе этой идеи на JavaScript/Canvas-реализацию.

Sign in to add a comment
Powered by Google Project Hosting