Брезенхем: Алгоритм построения окружности — различия между версиями

Материал из SpeccyWiki
Перейти к: навигация, поиск
(Новая страница: «Процедура использует дополнительные данные, расположенные по адресу '''#6000-#63FF'''.Данные п...»)
 
(Содержимое страницы заменено на «Статья удаленна из-за самоуправства рязанского пидора Димачки Быстров…»)
Строка 1: Строка 1:
Процедура использует дополнительные данные, расположенные по адресу '''#6000-#63FF'''.Данные предназначены для построения точек. Перед использованием алгоритма необходимо вызвать '''mkbod'''. Входные параметры:,BC=YX координаты центра радиуса, A-радиус.
+
Статья удаленна из-за самоуправства рязанского пидора Димачки Быстрова.Сдохни с туберкулеза гнида
Автор алгоритма-Busy.
+
 
+
пример вызова процедуры:
+
<code><pre>
+
        ORG #8000
+
 
+
tabbod  =  #6000
+
 
+
begin
+
run  call  mkbod
+
  xor  a;радиус =0
+
slucka  push  af 
+
  ld  bc,#6080; координаты центра 
+
  call  circle 
+
  pop  af 
+
  add  a,#03;увеличим радиус на 3
+
  cp  #60 
+
  jr  c,slucka
+
stu jr stu
+
  ret
+
mkbod  ld  ix,tabbod 
+
  ld  hl,#4000 
+
mkbb1  ld  (ix+#00),h 
+
  inc  xh 
+
  ld  (ix+#00),l 
+
  dec  xh 
+
  call  dole 
+
  inc  xl 
+
  jr  nz,mkbb1 
+
  inc  xh 
+
  inc  xh 
+
mkbb2  ld  a,xl 
+
  rrca   
+
  rrca   
+
  rrca   
+
  and  #1f 
+
  ld  (ix+#00),a 
+
  ld  a,xl 
+
  cpl   
+
  add  a,a 
+
  add  a,a 
+
  add  a,a 
+
  or  #c7 
+
  ld  (mkbb3+1),a 
+
  xor  a 
+
mkbb3  set  1,a 
+
  inc  xh 
+
  ld  (ix+#00),a 
+
  dec  xh 
+
  inc  xl 
+
  jr  nz,mkbb2 
+
  ret   
+
     
+
dole  inc  h 
+
  ld  a,h 
+
  and  #07 
+
  ret  nz 
+
  ld  a,#20 
+
  add  a,l 
+
  ld  l,a 
+
  ret  c 
+
  ld  a,#f8 
+
  add  a,h 
+
  ld  h,a 
+
  ret 
+
 
+
</pre></code>
+
 
+
процедура рисования окружности
+
 
+
<code><pre>
+
circle  ld  d,a 
+
  or  a 
+
  jp  z,bod 
+
  inc  a 
+
  ld  h,b 
+
  ld  l,c 
+
  ld  (xy14+1),hl 
+
  ld  (xy15+1),hl 
+
  ld  (xy16+1),hl 
+
  ld  (xy17+1),hl 
+
  ld  xl,a 
+
  dec  a 
+
  ld  e,a 
+
  ld  a,d 
+
  add  a,b 
+
  ld  b,a 
+
  push  de 
+
  call  bod 
+
  pop  de 
+
  ld  a,b 
+
  sub  d 
+
  sub  d 
+
  ld  b,a 
+
  push  de 
+
  call  bod 
+
  pop  de 
+
  ld  a,b 
+
  add  a,d 
+
  ld  b,a 
+
  ld  a,c 
+
  add  a,e 
+
  ld  c,a 
+
  push  de 
+
  call  bod 
+
  pop  de 
+
  ld  a,c 
+
  sub  e 
+
  sub  e 
+
  ld  c,a 
+
  call  bod 
+
  ld  d,#00 
+
  ld  h,d 
+
  ld  l,d 
+
  ld  e,xl 
+
  ld  ix,#ff 
+
e130  inc  d 
+
  ld  c,d 
+
  ld  b,#00 
+
  add  hl,bc 
+
     
+
  ld  a,h 
+
  add  a,a 
+
  jr  nz,e130 
+
  push  hl 
+
  add  hl,hl 
+
  add  hl,hl 
+
  xor  a 
+
  ld  b,a 
+
  ld  c,e 
+
  sbc  hl,bc 
+
  pop  hl 
+
  jr  c,e130 
+
     
+
  ld  b,#00 
+
  ld  c,e 
+
  sbc  hl,bc 
+
  dec  e 
+
  push  hl 
+
  call  eelin 
+
  pop  hl 
+
  ld  xl,d 
+
  xor  a 
+
  xor  xh 
+
  jr  z,e130 
+
  ret   
+
     
+
eelin  inc  xl 
+
  ld  a,xl 
+
  cp  e 
+
  jr  z,eeln1 
+
  ld  a,e 
+
  cp  d 
+
  jr  nc,eeln1 
+
  ld  xh,d 
+
  ret   
+
eeln1  push  de 
+
  push  ix 
+
xy14  ld  bc,#5555 
+
  ld  a,b 
+
  add  a,e 
+
  ld  b,a 
+
  push  de 
+
  call  ccnn1 
+
  pop  de 
+
xy15  ld  bc,#5555 
+
  ld  a,b 
+
  sub  e 
+
  ld  b,a 
+
  call  ccnn1 
+
  pop  ix 
+
  pop  de 
+
  ld  a,d 
+
  cp  e 
+
  jr  nz,eeln2 
+
  cp  xl 
+
  ret  z 
+
eeln2  push  de 
+
  push  ix 
+
xy16  ld  bc,#5555 
+
  ld  a,c 
+
  add  a,e 
+
  ld  c,a 
+
  push  de 
+
  call  ccnn2 
+
  pop  de 
+
xy17  ld  bc,#5555 
+
  ld  a,c 
+
  sub  e 
+
  ld  c,a 
+
  call  ccnn2 
+
  pop  ix 
+
  pop  de 
+
  ret   
+
     
+
ccnn1  push  bc 
+
  push  de 
+
  ld  a,c 
+
  sub  d 
+
  ex  af,af 
+
  ld  a,c 
+
  sub  xl 
+
  ld  d,a 
+
  ex  af,af 
+
  ld  c,a 
+
  call  rovno 
+
  pop  de 
+
  pop  bc 
+
  ld  a,c 
+
  add  a,d 
+
  ld  d,a 
+
  ld  a,c 
+
  add  a,xl 
+
  ld  c,a 
+
  jp  rovno 
+
 
+
ccnn2  push  bc 
+
  push  de 
+
  ld  a,b 
+
  sub  d 
+
  ex  af,af 
+
  ld  a,b 
+
  sub  xl 
+
  ld  d,a 
+
  ex  af,af 
+
  ld  b,a 
+
  call  zvislo 
+
  pop  de 
+
  pop  bc 
+
  ld  a,b 
+
  add  a,d 
+
  ld  d,a 
+
  ld  a,b 
+
  add  a,xl 
+
  ld  b,a 
+
  jp  zvislo
+
;----------------------построение точки по координатам BC
+
bod  ld  h, #60;!------high tabbod;>
+
  ld  l,b 
+
  ld  d,(hl) 
+
  inc  h 
+
  ld  a,(hl) 
+
  inc  h 
+
  ld  l,c 
+
  or  (hl) 
+
  ld  e,a 
+
  inc  h 
+
  ld  a,(de) 
+
bodset  xor  (hl) 
+
  ld  (de),a 
+
  ret 
+
</pre></code>
+
 
+
ссылки:
+
http://ru.wikipedia.org/wiki/Алгоритм_Брезенхэма
+
http://www.codenet.ru/progr/video/alg/alg4.php
+
 
+
[[Категория:Программирование графики]]
+

Версия 14:47, 1 сентября 2015

Статья удаленна из-за самоуправства рязанского пидора Димачки Быстрова.Сдохни с туберкулеза гнида