алгоритм Брезенхэма, обьясните плиз |
1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!
алгоритм Брезенхэма, обьясните плиз |
GoodWind |
Сообщение
#1
|
Автооответчик Группа: Пользователи Сообщений: 1 188 Пол: Мужской Реальное имя: Александр Репутация: 16 |
Господа, кто нибудь может доходчиво обьяснить сабж ?
-------------------- Неадекватная чушь может быть адекватным ответом на неадекватный вопрос. Понятно или разжевать?
|
P@sh@ |
Сообщение
#2
|
Бывалый Группа: Пользователи Сообщений: 180 Пол: Мужской Репутация: 2 |
Есть у меня какой-то алгоритм Брезенхема для эллипса... сам не смотрел даже, и не помню, где достал (может здесь?)... см. вложение.
а для рисования линий много раз им пользовался (или похожим), нашел тут одну из самых первых собственных реализаций: Код procedure line(x1,y1,x2,y2:integer; c:byte); var dx,dy,dn,x,y:integer; function sgn(n:integer):shortint; begin if n<0 then sgn:=-1 else if n>0 then sgn:=1 else sgn:=0; end; function inr(a,b,c:integer):boolean; begin inr:=(a>=b)and(a<=c); end; begin dx:=x2-x1; dy:=y2-y1; x:=x1; y:=y1; if abs(dx)>=abs(dy) then begin dn:=abs(dx) div 2; while (x<>x2) do begin pset(x,y,c); x:=x+sgn(dx); dn:=dn-abs(dy); if dn<=0 then begin dn:=dn+abs(dx); y:=y+sgn(dy); end; end; end else begin dn:=abs(dy) div 2; while y<>y2 do begin pset(x,y,c); y:=y+sgn(dy); dn:=dn-abs(dx); if dn<=0 then begin dn:=dn+abs(dy); x:=x+sgn(dx); end; end; end; pset(x,y,c); end; Прикрепленные файлы Bresenham_Ellipse.txt ( 8.02 килобайт ) Кол-во скачиваний: 518 |
Текстовая версия | 20.05.2024 20:21 |