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