Вы находитесь на странице: 1из 29

.

1930 , ,
(Westinghouse), (),
.
.
1951 ,
()
-
. .
- (Ivan
Sotherland), 1962
(Sketchpad).
(, , ), .
, ,
, . 1965
IBM
IBM-2250. 70-
, . 1982
,
. 1979 , Lucasfilm
, ,
.
,
, Silicon Graphics, Evans&Sotherland.
.

.

.
,
.
(CAD Computer Aided Design)
, .
.
.
, , SIGGRAPH,
.

.
, .

.
.




. ,
4 , 2
, .
:
x ' x Cos y Sin
y ' x Sin y Cos


,
,
. ,
1 .

. .

. .
,
3 3 .

, .


,
. :
, , ,
-. ,
.
- .
, ,
.

. 28. .
pixel (picture element - ) . , .
, .
, , :
y kx b . , ,
0 1.

x , ,
x, Round y . kx .
.
. k y

x x 1 .
, y k .
:
x i 1 x i 1 , y i 1 y i k
k 1 , x y 1 , x y
, y , x

x y 1 .
k
k

.
.
, .
. 29.

. 29. .
,
.
Procedure Bresenham(x1,y1,x2,y2,Color: integer);
var
dx,dy,incr1,incr2,d,x,y,xend: integer;
begin
dx:= ABS(x2-x1);
dy:= Abs(y2-y1);
d:=2*dy-dx;
{ d}
incr1:=2*dy;
{ d<0}
incr2:=2*(dy-dx); { d>=0}
if x1>x2 then
{ . x}
begin
x:=x2;
y:=y2;
xend:=x1;
end
else
begin

x:=x1;
y:=y1;
xend:=x2;
end;
PutPixel(x,y,Color);
{ }
While x<xend do
begin
x:=x+1;
if d<0 then
d:=d+incr1
{ }
else
begin
y:=y+1;
d:=d+incr2;
{ , y-}
end;
PutPixel(x,y,Color);
end;{while}
end;{procedure}
, ,
, ,
. ,
, , , , .
.
, ,
.
, .

, , ,
.
- ,
.
:
x x1 t x 2 x1

y y1 t y 2 y1 .

t 0,1 ,
x1, y1 x 2, y 2 . ,
. x ,

x x1
x 2 x1

y y1

x x1
y 2 y1
x 2 x1

- .

, , ,
.

, . 30.

. 30. -.
0000.
4- /
. 1
.
1 - ;
2 ;
3 - ;
4 - ;
.
: y max y - 1-
, y y min - 2- , x max x - 3- x x min - 4- .
, , 0000,
P1 P 2 0000 , .
, , .
1 ,
. 0000,
, .
,
/ ,
.
.
,
. P1 x1, y1 , P 2 x 2, y 2 ,
: xmin, xmax, ymin, ymax. : Accept_Check
; Reject_Check
; Outcodes 4- /; SWAP
.
Procedure CLIP(x1,x2,y1,y2,xmin,xmax,ymin,ymax: real);
type
outcode = array[1..4] of boolean;
var
accept,reject,done: boolean;
outcode1,outcode2,
outcode3,outcode4:outcode;{ /}
begin
accept:= false;

reject:= false;
done:= false;
repeat
Outcodes(x1,y1,outcode1);
Outcodes(x2,y2,outcode2);
{ }
reject:=Reject_Check(outcode1,outcode2);
if reject then done:= true
else
begin { }
accept:=Accept_Check(outcode1,outcode2);
if accept then done:=true
else
begin { }
{ P1 , SWAP }
if not((outcode1[1])or(outcode1[2])or
(outcode1[3])or(outcode1[4])) then SWAP;
{ P1 }
if outcode1[1] then
begin { }
x1:=x1+(x2-x1)*(ymax-y1)/(y2-y1);
y1:=ymax;
end
else if outcode1[2] then
if outcode1[1] then
begin { }
x1:=x1+(x2-x1)*(ymin-y1)/(y2-y1);
y1:=ymin;
end
else if outcode1[3] then
begin { }
y1:=x1+(y2-y1)*(ymax-x1)/(x2-x1);
x1:=xmax;
end
else if outcode1[4] then
begin { }
y1:=x1+(y2-y1)*(ymin-x1)/(x2-x1);
x1:=xmin;
end;
end;
end;
until done;
if accept then
Line(x1,y1,x2,y2); { }
end;{procedure}


,
. 31.

z :
z z min z z max , .
, , ,
. , ,

, , ..
.
, .
.

31. , .


. , ,

,
. ,
. ,

, , ,
z .
.
. z max 1, x y 1,1 ,
. 32.
,
X :

,
X ' X S 1
,1
,1

x
y
z
max
max
max

. 32. .
z max x
z max y
xmax a
x x
, , y
.
z max
a
a

. ,
- 4- 6-
/ .
, ,
z x , z x .. .
x, y , z
:
1- : y z
2- : y z
3- : x z
4- : x z
5- : z 1
6- : z z 'min
/
, . 33.

. 33. .

1 0
0 1

0
0

1
Mp 0 0
1 z 'min

z 'min
0 0
1 z 'min

0
0

1 .

M p
,
. , . 32, 33: D ' DM p ,
A ' AM p , B ' BM p , C ' CM p , , , z 'min , z 'min , z 'min ,1 M
p 1,1,0,1 .
, .
1 - 3-
-.
2 - M p
x y .




.
.

.
.

, , ,
.
.
,
.
,
, .
, . 1 P Ox Q ,
, zOy .

. 1.

xQ

P.

,
.
.
. P
, ,
P .
, P ,
P x, y, z .
. Ox
, Oy , . 2.

.2. .
Oz ,
.
, .
.
Oz ,
Ox Oy
Ox
;
*.
, . 3. ,
.
.

, , Oz Ox
, Oy Oz, Ox Oy.
: (x,y,z)(y,z,x)(z,x,y).

. 3. .


. -
.
-. -
, : -
, - .
-
-.
. P x, y, z , P x, y, z ,
p xi yj zk -, P , i, j, k
, . P
- p , P x, y, z xi yj zk p .
, - .
-
. , -

. - p
a p
a p , :
p

x2 y2 z2 .

- p q P
q q .
.

.
. .

-, , .
P1 x1 , y1 , z1 p1 P2 x2 , y 2 , z 2 p2
, 4.

. 4. .


.
.
,
.
. .
,
. ,
, -. ,
n , n.

. ,
, .
,
.
, ,
. ,
. :
.
, . ,
.

. 14. .

. 15. .


, .
.
. ,
-, -
.

. 16. .
.
, .
.

, ,
, .

.
.
.
, ,
. ,

. ,

.

. 17. .

.
, .
18.

. 18. .
,
. , .
.
.
,

. ,

.
.
.
, .. ,
.

. 19. .
A A ' .
k. A ' .
x y . A y Az N y ON ,
y
y
ky
(1)
, y
zk k
zk
x:

kx
.
zk

, k - , N 0,0, k .
,
a , 20, x y :
x

kx
,
z

ky
z

(2)

. 20.
.
(1)
. (2)
.

.
.
.
.
.

. ,
, . ,
.
. , ,
, , .
. ,
,
.
.

, ,
, . ,

.
, , ,
. ,
, ,
.
.

. 21. , .
, ,
.
. , ,
.
.
, -
.
, .

,
,
, , , .
,
.
. , ,
: , . ,
.
.
.
X M YM Z M . ,
. .
X N Y N Z N .
. . :
.

.
, , , .

. , ,
.
1. , ,
.
2. , ,
.
3.
.
, ,
. ,
.
, , . , .
,
. ,
, .
.


. . 22 A
B .

. 22. A B .
AB .
R , AB .
A B B A R .
,
,
:

B A R Ax R x , A y R y , Az R z


.
,
. , ,
.
. , ,
. .23
ABC .

. 23. .
2
A ' B ' C ' .
Sx 0
S
. A A '
0
S
y

:
Sx
0

x' , y ' x, y

0
.
S y


. 24 A x, y B x ' , y '
.

. 24. A .
. ,
- A x. r - A ,

x ' r Cos r Cos Cos Sin Sin


y ' r Sin r Sin Cos Cos Sin

Cos x Sin y ,
r
r

'
x ' y , :

x ' x Cos y Sin


y ' x Sin y Cos

x , y x, y Cos
Sin
'

'

:
Sin
Cos




. -
,
.

.
. ,
, . ,
,
.
.
,
.
. .

x, y wx, wy , w ,
w 0 . w . , ,

: wx / w, wy / w, w / w x, y,1 .
n-
n 1 -. .
*.
. ,
n- ,
. , 0,0,1,0
z .
0,0,1, , 0 ,
0,0,1 / .
a, b, c .
,
a / c, b / c . ,
, ,
a, b, c z 1 ,
. 25.

. 25. a, b, c z 1 .



, .
. ,

. N .

, N 2 . ,
N 1000 ,
1,000,000 .
- ,
,
. ,
*


. n - . ,
n N . ,
320 200 , n 64000, N
1000 64,000,000.
, .

z-,
.
OpenGL Direct3D.
.
X Y . z-
,
.. X Y. z- z- .
z- ,
. ,
, .
z-. z-
z-, z- z-
, .
.
z-
. ,
: Ax By Cz D 0 .
z- : z

D Ax By
f x, y . z 0 f x 0 , y 0 . zC


D A x 0 x By 0 D Ax 0 By 0 Ax
A x
.
z1 f ( x 0 x, y 0 )

z0
C
C
C
C
x 1 ,

Ax
Const , ,
C

z1 z 0 Const . , z-
.


(: , , ). ,
. ,
.
.


,
.
.
:
1. z.
2. , z .
3. ,
z-.


, .
1 3 . 2.
P ,
. Q z- P
().
, P .
:
1. x- ,
.
2. y- ,
.
3. P Q,
( . 36 ).
4. Q P,
. . 36 b).
5. xOy, ,
(
).

. 35.

z - P Q .

)
b)
. 36. .
, P Q.
P Q . , . 37,
.

. 37.
: ,
(.. ), .
P Q .

, .

.
.
. 38.

. 38. AB .
A. B,
, . ,
A, . ,
. ,
AB.
AB, , .
AB, . , ,
.


,
.
, ,
.

, .
.
. ,
.
spline ,
, ,
.

. xi , yi , i 0, m ,
x0 x1 ,..., xm 1 xm . y S x ,
:
1) : S x i y i , i 0, m .
2) ,
x0 , xm .
xi , xi 1 , i 0, m 1
:
Si x

aij x xi .
j

j 0

. 40. .
aij .
xi , xi 1 4 aij ,
4m .
. m 1
xi , i 1, m 1. 2 m 1

.
m 1 m 1 m 1 m 1 4m 2 .
x0 , xm .
.
.
y f x


z f x
.

. t - ,
0 t 1 .
:
x t a x t 3 bx t 2 c x t d x

3
2
y t a y t by t c y t d y
z t a t 3 b t 2 c t d
z
z
z
z

x t , y t , z t ,
. ,
x :
dx
3a x t 2 2bx t c x .
dt


,
. .
P1 P4 , R1 R4 .
.
a x , bx , c x , d x ,

. :
x 0 P1x , x1 P4 x , x ' 0 R1x , x ' 1 R4 x

(*)

x :

a
b

x t t 3 , t 2 , t ,1 c


a
b
Cx
c

d

T t 3 , t 2 , t ,1

, x t TC x .
x

(*) , x 0 P1x 0,0,0,1C x , x1 P4 x 1,1,1,1C x .


x ' t 3t 2 ,2t ,1,0 C x ,

x 0 R1x 0,0,1,0C x ,
'

x ' 1 R4 x 3,2,1,0C x . - :

P1x 0 0 0 1
P 1 1 1 1
4x
C .
R1x 0 0 1 0 x

R4 x 3 2 1 0
C x 4 4 .

1 P1x
2 2 1
3 3 2 1 P
4 x M h Ghx .
Cx
0
0
1
0 R1x


0
0
0 R4 x
1
M h - , Gh - .
C x x t : x t TM h Ghx .
: y t TM h Ghy , z t TM h Ghz .
.
TM h 2t 3 3t 2 1 , 2t 3 3t 2 , t 3 2t 2 t , t 3 t 2 , Ghx , :
x t TM h Ghx P 2t 3 3t 2 1 P 2t 3 3t 2 R t 3 2t 2 t R t 3 t 2 .

1x

4x

1x

4x

.
, , ,
,
,
. 41.

. 41. .
, R1 R4 .
,
, , R1 R4 (
) P2 P3 , .42,
: P ' 0 R1 3 P2 P1 P ' 1 R4 3 P4 P3 .

. 42. .
:

P1 1 0 0 0 P1
P 0 0 0 1 P
2 M hb Gb ,
Gh 4
(*)
R1 3 3 0 0 P3


R4 0 0 3 3 P4
Gb - . x t ,
x t TM h Ghx TM h M hb Gbx 1 t 3 P1 3t t 1 2 P2 3t 2 1 t P3 t 3 P4 .

, P1 P2 P3 P4 .
, , (*) 0 1
.
,

M h M hb

1
3
Mb
3

3
6
3
0

3 1
3 0

0 0

0 0

- .

.
, ,
,
.
0 1.
, 1 .

, , ,
RGB (Red, Green, Blue).
: ,
.
,
.
.

.


. 39. .

.
.
I a I p k a , I p , k a 0,1 - ,
.

: I d I p k d Cos , - ,
.
L , N - .

Cos L, N - . I d I p k d L, N ,
k d - .

,
. , , ,

. R -
, V - , .
:
I m I p k m Cos n , - R V . n
1 200, .
n
. R V - , :
n
I m I p k m R, V .

.
: ,
:
Ip
n
I I pka
k L, N k m R, V ,
2 d

Rr
r - , R 1 - .
, , , r .

, .
,
, 1

.
I 1 I 2 .
.
:
I I 1 I 2 1 .
.