10. Wyznaczanie powierzchni widocznych

!"#

$% !% &

'%(

) * *!"% ! $+%

!,*!

Czy tak uzyskany obraz jednoznacznie pokazuje

-$% - &

'+% % !

$$

.$$ /!/+%

Wniosek:

) 0$! +% *!

1 0 2" /

niejednoznaczny.

- !*!% !!,

3 /(

1. !#0 0 0 #*!

= { }

2. 4! $

3. /%0*! 0 ! *0$!

00 5 *!

→

4. *#*!1%- -

0!02 % +

rastrowym.

10.1.1.

widocznych

- 0$! !+(

• ' $%0 + # *!"

punktu widzenia obserwatora, uszeregowanie od

0% 0% 0/ 0*!

• 0 + 0!0 *! %- -

!*0 $%

/%$*!/ #

.! #50 !0 % .

- 0$! (

• /%- ! + 0/0

/$!$*!+

• 3 5 *! -

00 + 5 *!

! 0*!

/%- / #n *!

.! #50 !0 % ⋅ , przy

czym N 0 !$

Algorytmy mieszane:

!0 ! !5$! +

%/0 %

10.1. - -+%-+ *!

(Depth - sorting method)

Ogólny schemat algorytmu:

Krok 1. + $% *!

Krok 2. ' # + $% !,

*! $%

Krok 3. ' 0!0*!%- $%

uzyskanego w kroku 2.

+ $% *!

• /%0*!/$!0%

= { }

! + $ * #+%0z

!,

• 4! S $%0 +%-%

! 0 *!z % *!0+ 0"%

najmniejszej.

'%(

′

′

′

′

′ ′

+ $% %*!′ i ′ %

*!

′

′

′

′

′ ′

+ $% %*!′ i ′ %

dobrego wyniku.

6 ' # + $% !,

*! $%

• ' !-#*!" + $%

" %%0 ++!

• * 0 %0 " 5! +

+

poprzednich miejscach.

7 $ $% %- $!0

% *!

7 ' # #+%!,x

′ ′

′

′

′

′ ′

′

/%*! ′ i ′ %[′ ′ ] i

[′ ′ ] $ $!" 0

pozytywny.

7 6 ' # #+%!,y

/%*! ′ i ′ %[ ′ ′ ] i

[ ′ ′ ] $ $!" 0

pozytywny.

7 8 9% /*!′ -+%

!#0/*!′

′ ′

′

′

kierunek obserwacji

/ 1 $! %/ !0 2 *!

′ / ! ! !$ ! $

*!+′ , to wynik testu jest pozytywny.

:!0#$!" 0 0*%

!,!, #(′ ′ ′ )*!′

0 # *

′ ′′ + ′ ′′ + ′ ′′ + ′ <

gdzie ′ ′ ′ ′ $ #!#

!"#0/*!′ .

7 ; 9% /*!′ -+%

!#0/*!′

′ ′

′

′

kierunek obserwacji

/ 1 $! %/ !0 2 *!

′ / ! ! % !$ ! $

*!+′ , to wynik testu jest pozytywny.

:!0" 0 0* %

!, !, # (′ ′ ′ ) *! ′

0 # *

′ ′′ + ′ ′′ + ′ ′′ + ′ <

gdzie ′ ′ ′ ′ $ #!#

!"#0/*!′ .

7 < ' ##*!′ i ′ na

!+(x-y)

′ ′

′

′

/ *! ′ i ′ !+ (x-y) $

$!" 0

Praktycznie, wykonanie testu polega na sprawdzeniu

! !-# %!# # *!

!0$ + ' % + - $0$!

% % %# #5 !,

%0$!!, $

• * /% +! # %

- + %0

*!

• =% 0 + #

- " $% *! 0

/

'%" # # $% %-

0 !% +

* *!

'%(

′

′

4!′ i ′ %%$ + $%

$%&

> / %1!$20%$*!

#!+!0 0% 0+

′ ′

′

′

10.3. Algorytm z-bufora

(Depth - buffer method)

Ogólny schemat algorytmu:

′ ′ ′ ′

prosta rzutowania

Piksel (x,y) * 1

*!2 0 *!" % #0 #+% z punktu

!+! *! $ 0

najmniejsza.

Opis algorytmu:

+ $%+!(

• + 1refresh buffer)

• +-+ *!1depth buffer)

?+!0$ #"0

Krok 1. :!0!0+! -+ *!

/%- #+%!,(x,y)

% (

=

=

gdzie

- *+! %

(x,y),

- *+!-+ *!%

piksela (x,y),

- ,

- * #+%0z.

Krok 2. ' #-+ *!

• /%- *!"!

*z(x,y),

• / < % (

=

=

6 % 0!,*! /%

! *!

Podstawowym problemem obliczeniowym algorytmu z- bufora jest obliczanie z(x,y).

Algorytm obliczania z(x,y) %*!

• @ # 1

!, 2*!

• ?! #!A,B,C,D, równania

!"#0/*!

• ?!

= −

−

−

Obliczanie z / *!"

ekranu jest dyskretna

′

−

′

+

1. Obliczanie ′ (w linii).

′ = − +

− − = − − − −

$%

′ = −

2. Obliczanie ′ (w kolumnie).

′ = − − −

− = − − − +

$%

′ = +

Porównanie algorytmów

1. - -+%-+ *!

•

•

•

2. Algorytm z- bufora

•

•

•