Urz Zew Cw3, 1 STUDIA - Informatyka Politechnika Koszalińska, muniol, II rok, 3sem, Laborki systemy cyfrowe, sc paczka zadań, Systemy Cyfrowee, !

Nie obrażaj więc mojej inteligencji poprzez czynione na pokaz zaniżanie własnej.
POLITECHNIKA KOSZALIŃSKA - WYDZIAŁ ELEKTRONIKI
URZĄDZENIA ZEWNĘTRZNE
Ćwiczenie laboratoryjne N 3
Ćwiczenie laboratoryjne N 3
TEMAT:
OBSŁUGA KART GRAFICZNYCH Z WYKORZYSTANIEM
PRZERWAŃ
Celem ćwiczenia jest zapoznanie się z przerwaniami obsługującymi karty graficzne, oraz
z podstawowymi algorytmami rysowania linii prostych i krzywych.
Przygotowanie pracy laboratoryjnej wykonywane przed ćwiczeniem.
1.
Zapoznaj się z przerwaniem BIOS'u o numerze 10h. W szczególności z jego funkcjami
00h i 0Ch, obsługującymi karty graficzne.
2.
Zapoznaj się z dyrektywą MACRO i EQU.
3.
Zastanów się w jaki sposób narysować odcinek pionowy lub poziomy z wykorzystaniem
informacji zawartych w pkt. 1 i 2.
4.
Zapoznaj się z algorytmem Bresenhama dla odcinków innych niż pionowe lub poziome.
Stwórz schemat blokowy dla tego algorytmu uwzględniając specyfikę układu
współrzędnych na ekranie monitora.
Kolejność wykonywania ćwiczenia:
I.
Napisz program w Asemblerze wyświetlający na monitorze w dowolnym punkcie
ekranu pojedynczy pixel w rozdzielczości 320x200 w kolorze białym i sprawdź jego
działanie.
II. Wykorzystując dyrektywę MACRO rozbuduj wcześniejszy program, tak aby w
makrze znajdował się fragment kodu odpowiedzialny za umieszczenie piksela w
zadanym punkcie ekranu.
III. Przekształć program tak aby rysował odcinki o parametrach zadanych w Tabeli I.
IV. Używając algorytmu Bresenhama połącz linią ukośną dwa (dowolne) końce linii
uzyskanych z poprzedniego programu.
Algorytm Bresenhama
Założenia wstępne algorytmu Bresenhama:
• kwadratowy raster
• początkiem wektora jest początek układu współrzędnych – punkt (0, 0)
• kat nachylenia α ≤ 45°
Idea algorytmu Bresenhama jest optymalny, względem bieżącego punktu, wybór punktu
następnego. Jak widzimy na rysunku (Rys. 2) wybór taki dokonuje sie na podstawie
minimalnego błędu popełnianego przy liczeniu odległości „oczek” rastra od rzeczywistej linii.
1
Mimo ze ograniczamy sie do pierwszej ćwiartki, to rozszerzenie do pozostałych ćwiartek jest
natychmiastowe i trywialne.
1 z 4
  POLITECHNIKA KOSZALIŃSKA - WYDZIAŁ ELEKTRONIKI
URZĄDZENIA ZEWNĘTRZNE
Ćwiczenie laboratoryjne N 3
Drawing 1: Wybór następnego punktu w algorytmie
Bresenhama
Punkt początkowy wektora
P
1
(0, 0)
ogólnie
P
1
(x
1
, y
1
)
Punkt końcowy wektora
P
2
(dx, dy)
ogólnie
P
2
(x
2
, y
2
)
gdzie dx = x
2
− x
1
i dy = y
2
− y
1
z czego y = (dy/dx)x.
e
1
= (dy/dx)(x + 1) − y
e
2
= 1 − e
1
= 1 − (dy/dx)(x + 1) + y (2)
Chcąc określić, dla wyboru którego z punktów E(x+1, y) czy NE(x+1, y+1) popełniamy
większy błąd zbadamy różnice:
e
1
− e
2
= 2(dy/dx)(x + 1) − 2y − 1 (3)
zgodnie z założeniem, dla dx > 0 mnożąc obie strony przez dx nie zmieniamy znaku
różnicy:
(e
1
− e
2
)dx = 2(x + 1)dy − 2ydx − dx
(4)
Wprowadźmy zmienna decyzyjna δ jako:
δ = (e
1
− e
2
)dx = 2(x + 1)dy − 2ydx − dx (5)
Znak δ decyduje o wyborze punktu bliższego rzeczywistej prostej.
jeśli δ < 0, to e
1
< e
2
, zatem należy wybrać punkt E(x + 1, y)
jeśli δ ≥ 0, to e
1 ≥
e
2
, zatem należy wybrać punkt NE(x + 1, y + 1).
Kolejne wartości bieżących x, y i δ wyznaczają formuły rekurencyjne:
jeśli wybrano punkt E(x + 1, y):
x
i+1
= x
i
+ 1
y
i+1
= y
i
δ
i+1
= 2(x
i
+ 1 + 1)dy − 2y
i
dx − dx
= 2(x
i
+ 1)dy − 2y
i
dx − dx + 2dy = δ
i
+ 2dy
(6)
jeśli wybrano punkt NE(x + 1, y + 1):
x
i+1
= x
i
+ 1
y
i+1
= y
i
+ 1
δ
i+1
= 2((x
i
+ 1) + 1)dy − 2(y
i
+ 1)dx − dx
= δ
i
+ 2(dy − dx) (7)
Ponieważ dx i dy są stałymi, można dodatkowo uprościć obliczenia przyjmując:
incrNE = 2dy − 2dx
incrE = 2dy
(8)
a mnożenia zastąpić przesunięciem w lewo.
2 z 4
 POLITECHNIKA KOSZALIŃSKA - WYDZIAŁ ELEKTRONIKI
URZĄDZENIA ZEWNĘTRZNE
Ćwiczenie laboratoryjne N 3
Tabela I:
Długość
[pixel]
Lp. Kolor
Kształt Pkt 'styku'
1
jasnoniebieski
30

10, 10
2
jasnozielony
60

300,10
3
jasno siny
90

10,180
4
jasnoczerwony
120

300,180
5
różowy
20

150,100
6
żółty
40

150,100
7
biały
80

150,100
8
zielony
160

190,100
9
czerwony
25

100,100
10 niebieski
50

50,50
11 siny
100

100,100
12 fioletowy
150

5,5
13 brązowy
30

200,20
14 jasnoszary
60

70,100
15 szary
90

100,100
16 jasnoniebieski
120

150,10
17 siny
20

150,100
18 zielony
40

30,30
19 jasnoczerwony
80

100,120
20 jasnoszary
160

160,160
Algorytm Bresenhama:
procedure Bresenham(x0, y0, x1, y1, kolor: integer);
var
Δx,Δy, incrE, incrNE, δ, x, y: integer;
begin
Δx := x1 − x0;
Δy := y1 − y0;
δ := 2 * Δy − Δx;
(* Wartość początkowa δ *)
incrE := 2 * Δy;
(* Inkrementacja przy wyborze punktu E *)
incrNE := 2 * (Δy − Δx);
(* Inkrementacja przy wyborze punktu NE *)
x := x0; y := y0;
PutPixel(x, y, kolor);
(* Piksel początkowy *)
3 z 4
 POLITECHNIKA KOSZALIŃSKA - WYDZIAŁ ELEKTRONIKI
URZĄDZENIA ZEWNĘTRZNE
Ćwiczenie laboratoryjne N 3
while x < x1 do begin
if δ <= 0 then begin
(* Wybrano E *)
δ := δ + incrE;
x := x + 1;
end
else begin
(* Wybrano NE *)
δ := δ + incrNE;
x := x + 1;
y := y + 1;
end;
PutPixel(x, y, kolor);
end;
(* while *)
end;
(* Bresenham *)
Przykładowe pytania i polecenia:
1. Omów działanie napisanych programów.
2. Do czego służy MACRO?
3. Do czego służy EQU?
4. Omów zasadę działania algorytmu Bresenhama.
5. Do czego służy przerwanie 10h, 0Ch?
6. Co oznacza dyrektywa .STACK?
7. Czym różni się procedura od makra?
Literatura
S. Kruk:
Programowanie w języku Assembler
, PLJ, W-wa, 1992.
G. Syck:
Turbo Assembler. Biblia użytkownika
, LT&P, W-wa, 1994.
M. Gieroń:
Przerwania systemowe i programy rezydentne
, Karat, Tarnów, 1993.
S. Kruk:
Turbo debugger
PLJ, W-wa, 1995.
R. Goczyński, M.Tuszyński:
Mikroprocesory 80286,80386 i i486
, Help, W-wa, 1991
P. Metzger, A. Jełowicki:
Anatomia PC
, Helion, Gliwice, 1997
http://www.republika.pl/wmula/prog/bresenham.html
4 z 4
 
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • alter.htw.pl
  • Powered by WordPress, © Nie obrażaj więc mojej inteligencji poprzez czynione na pokaz zaniżanie własnej.