Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Сб апр 20, 2024 04:41

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
 Заголовок сообщения: Эллипс и окружность
СообщениеДобавлено: Ср авг 27, 2008 23:20 
Не в сети
Аватара пользователя

Зарегистрирован: Вт мар 20, 2007 23:39
Сообщения: 1261
Благодарил (а): 3 раз.
Поблагодарили: 19 раз.
Примитивы для рисования окружности и эллипса:
Код:
FLOAT indexer
FLOAT radius1
FLOAT radius2

: Эллипс   \ ( x0 y0 r1 r2 color -- )
  >R
  2DUP MAX S>F  \ Оставляем максимальный радиус
  S>F radius2 F!
  S>F radius1 F!
  FPI F* 2.0 F* FDUP F>S  \ x0 y0 r L    R: color    F: l  \ Получаем длину окружности (это число пикселей для отрисовки)
  FPI 2.0 F* FSWAP F/ indexer F!   \ x0 y0 r L    R: color  \ Получаем и сохраняем индексатор
  0 DO  \ Цикл по длине окружности
    I S>F indexer F@ F* FCOS radius1 F@ F* OVER F>S +  \ x=r cos t + x0
    I S>F indexer F@ F* FSIN radius2 F@ F* OVER F>S +  \ y=r sin t + y0
    R@ PIXEL
  LOOP
  RDROP
  DROP DROP
;

: Окружность   \ ( x0 y0 r color -- )
  >R DUP R> Эллипс
;

200 200 100 0x00FF00 Окружность
400 300 200 70 0xFFFF00 Эллипс

_________________
Cтоимость сопровождения программного обеспечения пропорциональна квадрату творческих способностей программиста.
Роберт Д. Блисc


Последний раз редактировалось VoidVolker Ср авг 27, 2008 23:55, всего редактировалось 2 раз(а).

Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср авг 27, 2008 23:46 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Существует еще несколько сложноватый, но эффективный алгоритм Бризенхема в модификации для окружностей и эллипсов. А то тут и трансцендентные операции, и число точек с некоторой натяжкой можно считать корректным. Возможен муар.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт авг 28, 2008 01:43 
Не в сети

Зарегистрирован: Сб май 06, 2006 12:01
Сообщения: 959
Откуда: Украина, Харьков
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.
А OpenGL - примитивами же тоже можно? ;) Они доступны?

_________________
With best wishes, in4.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт авг 28, 2008 07:59 
Не в сети
Moderator
Moderator

Зарегистрирован: Ср май 10, 2006 15:37
Сообщения: 1132
Откуда: Chelyabinsk ( Ural)
Благодарил (а): 0 раз.
Поблагодарили: 9 раз.
Хищник писал(а):
Существует еще несколько сложноватый, но эффективный алгоритм Бризенхема в модификации для окружностей и эллипсов. А то тут и трансцендентные операции, и число точек с некоторой натяжкой можно считать корректным. Возможен муар.


Line drawing routines for forth
... is basically the Breshenham algorithm

http://jasonwoof.org/drawlines.fs

P.S. На форте Бризенхемом тоже рисовал многоугольники ( надо поискать:)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт авг 28, 2008 14:39 
Не в сети
Аватара пользователя

Зарегистрирован: Вт сен 11, 2007 11:07
Сообщения: 187
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
вообще-то алгоритм Брезенхама для эллипсов на современном железе будет тормозить,
он хорош лишь для микроконтроллеров, уж лучше fixpoint, но, в любом случае,
рисовать надо сразу 8 точек, а не одну. могу поискать название книги, где описываются
эффективные растровые алгоритмы рисования на плоскости (сейчас не помню просто
ни авторов ни издательства).


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт авг 28, 2008 20:36 
Не в сети
Аватара пользователя

Зарегистрирован: Вт мар 20, 2007 23:39
Сообщения: 1261
Благодарил (а): 3 раз.
Поблагодарили: 19 раз.
Задача была в следующем: написать одноразовое слово, рисующую простую окружность. (Вот такая была просьба ко мне)
garbler писал(а):
могу поискать название книги, где описываются эффективные растровые алгоритмы рисования на плоскости

Ооо! Это было бы просто великолепно! 8) Мне очень интересно.

_________________
Cтоимость сопровождения программного обеспечения пропорциональна квадрату творческих способностей программиста.
Роберт Д. Блисc


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт авг 29, 2008 11:58 
Не в сети
Аватара пользователя

Зарегистрирован: Вс май 07, 2006 11:38
Сообщения: 279
Откуда: Slavyansk, Ukraine
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Ссылки на книжку "Компьютерная геометрия и алгоритмы машинной графики":
http://fforum.winglion.ru/viewtopic.php?p=16448#16448
(вдруг пригодится? Сам еще не качал и чё там есть не знаю...)

_________________
Банзай!


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт авг 29, 2008 13:32 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
in4 писал(а):
А OpenGL - примитивами же тоже можно? Они доступны?

В OpenGL нет примитивов построения окружностей и эллипсов.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт авг 29, 2008 22:16 
Не в сети
Аватара пользователя

Зарегистрирован: Вт мар 20, 2007 23:39
Сообщения: 1261
Благодарил (а): 3 раз.
Поблагодарили: 19 раз.
in4 писал(а):
А OpenGL - примитивами же тоже можно? Они доступны?

Из примитивов есть только четыре + по несколько режимов - точка, линия, треугольник, квадрат, полигон. Можно точками или многоугольник линиями.

_________________
Cтоимость сопровождения программного обеспечения пропорциональна квадрату творческих способностей программиста.
Роберт Д. Блисc


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн сен 01, 2008 09:35 
Не в сети
Аватара пользователя

Зарегистрирован: Вт сен 11, 2007 11:07
Сообщения: 187
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
VoidVolker писал(а):
garbler писал(а):
могу поискать название книги, где описываются эффективные растровые алгоритмы рисования на плоскости

Ооо! Это было бы просто великолепно! 8) Мне очень интересно.


Ж.Эгрон "Синтез изображений, базовые алгоритмы", М., "Радио и Связь", 1993г. стр.29-42

в этой-же книге есть про сглаживание векторов (антиалиасинг), растеризацию (дизеринг), отсечения отрезков, полигонов, кривые второго порядка (параболы, гиперболы и т.п.) и много прочего разного (например, заливки). 3D нет совсем (ни проективной геометрии ни чего бы то ни было ещё), т.е. весьма специализированная книга, оправдывающая своё название.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 10 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 33


Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB