Professional Documents
Culture Documents
KTDH
KTDH
K THUT HA
(Dng cho sinh vin h o to i hc t xa)
Lu hnh ni b
H NI - 2006
K THUT HA
Bin son :
Li ni u
LI NI U
Hin nay ho my tnh (Computer Graphics) l mt trong nhng chng trnh thng
dng nht, n gp phn quan trng lm cho giao tip gia con ngi v my tnh tr nn thn
thin hn. Tht vy, giao din kiu vn bn (text) c thay th hon ton bng giao din
ho, cng vi cng ngh a phng tin (multimedia) a ngnh Cng Ngh Thng Tin sang
mt phin bn mi.
Cun ti liu ging dy ny, ti mun mang li cho bn c cc c s l thuyt v ho
my tnh t n gin nht nh cc thut ton v ng thng, ng trn, a gic, k t..... Tip
n cc k thut xn ta, cc php bin i ho trong khng gian 2D v 3D.... Chng ta ln lt
lm quen vi th gii mu sc thng qua cc h mu: RGB, CMYK, HSV.... Phc tp hn na l
cc php chiu, cc phng php xy dng ng cong v mt cong cho i tng.
Ti liu gm by chng, trong chng mt gip bn c ci nhn tng quan v k thut
ho t trc n gi cng nh hng tng lai cho lnh vc ny. Cc chng tip theo, mi
chng s l mt vn t n gin n phc tp. Cui mi chng u c phn bi tp cho
chng ta kim tra li kin thc va c c. Bi tp gm hai dng: dng tnh ton v dng lp
trnh, i vi dng lp trnh bn c th vit bng C/C++ hay BC thm ch bng VB u c.
Cui cng l phn ph lc gm cc hng dn chng ta lm bi tp lp trnh, ngn ng hay
dng y l C/C++ hay BC.
B cc r rng, hnh nh phong ph, a dng. D cho bn cha tng bit v ho my
tnh hay bn nhiu nm lm vic trong lnh vc ny, bn u c th nhn thy rng cun sch
ny l mt b tham kho y cc thng tin hu ch v c tnh cht thc tin cao.
Trong qu trnh bin son mc d c gng ht sc nhng vn khng trnh khi nhng sai
st, rt mong nhn c s ng gp chn thnh t qu bn c.
Xin chn thnh cm n.
Tc gi
2. CC K THUT HO
2.1. K thut ho im (Sample based-Graphics)
- Cc m hnh, hnh nh ca cc i tng c hin th thng qua tng pixel (tng mu
ri rc)
- c im: C th thay i thuc tnh
+ Xo i tng pixel ca m hnh v hnh nh cc i tng.
+ Cc m hnh hnh nh c hin th nh mt li im (grid) cc pixel ri rc,
+ Tng pixel u c v tr xc nh, c hin th vi mt gi tr ri rc (s nguyn)
cc thng s hin th (mu sc hoc sng)
+ Tp hp tt c cc pixel ca grid cho chng ta m hnh, hnh nh i tng m
chng ta mun hin th.
Hnh 1.1 nh ho im
Bitmap
Pascal C
program
SRP
library
graphics algorithms
colour
positions
X Window
System
Graphics hardware
Image
image formats, compression, transfer
Hnh 1.2 K thut ho im
Phng php to ra cc pixel
- Phng php dng phn mm v trc tip tng pixel mt.
- Da trn cc l thuyt m phng (l thuyt Fractal, v.v) xy dng nn hnh nh m
phng ca s vt.
- Phng php ri rc ho (s ho) hnh nh thc ca i tng.
- C th sa i (image editing) hoc x l (image processing) mng cc pixel thu c
theo nhng phng php khc nhau thu c hnh nh c trng ca i tng.
Cc tham s
t trt
T trt
Thit b ra
ho vector(Vector Graphics)
- Hnh nh v m hnh ca cc vt th
- Khng thay i thuc tnh ca tng
c biu din bi tp hp cc im ca li im trc tip
(grid)
- X l vi tng thnh phn hnh hc c
- Thay i thuc tnh ca cc pixel => s ca n v thc hin qu trnh t trt v hin
th li.
thay i tng phn v tng vng ca hnh nh.
- Quan st hnh nh v m hnh ca hnh
- Copy c cc pixel t mt hnh nh
nh v s vt nhiu gc khc nhau bng
ny sang hnh nh khc.
cch thay i im nhn v gc nhn.
V d v hnh nh ho Vector
Wireframe
Skin
Skeletal
Hair
Muscle Model
ho minh ho
ho hot hnh v ngh thut
K thut ho
X l nh
X l
ho
10
11
3.2. My in
Dot size: ng knh ca mt im in b nht m my in c th in c
Addressability: kh nng a ch ho cc im in c th c trn mt n v di (dot per
inch)
S lng mu c th v trn mt im:
My v
Dot size
8 - 20/ 100inch
200, 600
5/1000inch
1500
6,15/1000 inch
1000, 2000
12
NEC
Hybrid
Hitachi EDP
Standard Dot-trio
SONY
Trinitron
13
(interaction data)
(Display
commands)
Keyboard
Display
processo
Data input
CRT
000000000000000
000000000010000
00
000000000000000
Bitmap refresh buffer
(the 1s are accentuated
for contrast)
16
24
14
10,15
LINE
400,300
LINE
600,800
Refesh Buffer
DrawLine(A, B):
Turn beam off,
move to A.
Turn beam on,
move to B.
Hnh 1.11 Cng ngh truyn nh sng trong mn hnh tinh th lng
15
Mu sc a dng (C su v rng)
Mu sc bo ho v t nhin
Hnh hay b mo ti 4 gc
Hnh dng nh, trng lng nh (approx 1/6 of Gi thnh cao (presently 3x CRT)
CRT, typ. 1/5 of CRT)
Gc nhn hp hn (typ. +/- 50 degrees)
Tiu tn ngun thp (typ. 1/4 of CRT)
tng phn thp (typ. 1:100)
Mn hnh phng tuyt i nn khng mo ti chi ( ngi) thp hn (typ. 200 cd/m2)
cc gc
Mu sc u, nh sinh ng
Khng b hiu ng in t trng
C th mn hnh va ln va rng (>20 inch)
Tm tt chng:
S ra i ca ho my tnh thc s l cuc cch mng trong giao tip gia ngi dng
v my tnh. Vi lng thng tin trc quan, a dng v phong ph c truyn ti qua hnh nh.
Cc ng dng ho my tnh li cun nhiu ngi nh tnh thn thin, d dng, kch thch
kh nng sng to v tng ng k hiu sut lm vic.
ho my tnh ngy nay c c ng dng rt rng ri trong nhiu lnh vc khao hc,
k thut, ngh thut, kinh doanh, qun lCc ng dng ho rt a dng, phong ph v pht
trin lin tc khng ngng. Ngy nay, hu nh khng c chng trnh ng dng no m khng s
dng k thut ho lm tng tnh hp dn cho mnh.
Mt h thng ho bao gi cng gm hai phn chnh l phn cng v phn mm. Phn
cng bao gm cc thit b hin th (thit b xut) v cc thit b nhp. Tiu biu nht l mn hnh,
c hai loi thng dng l CRT v LCD.
Bi tp:
1. Cu to v nguyn l hot ng ca mn hnh dng im. Nu cc khi nim vng m
khung, phn gii, t s phng.... ca mn hnh loi ny?
2. ngha v hot ng ca bng tra LUT?
16
Bi tp trc nghim:
1.
T s phng (aspect ratio) ca mn hnh l 1,4 vy mt hnh trn khi hin th trn mn
hnh s cho:
a. Hnh trn
b. Hnh ellipse nm ngang (bn knh theo trc x di hn bn knh theo trc y)
c. Hnh ellipse ng (bn knh theo trc x ngn hn bn knh theo trc y)
d. Hnh thoi
2.
3.
17
1.2. im v on thng
a. im
Trong h to hai chiu (x,y), ngoi ra n cn c tnh cht mu sc.
b. on thng
+ Biu din tng minh: y = f(x)
Mt on thng c xc nh nu bit 2 im thuc n. Phng trnh on thng i qua 2
im P (x1,y1) v Q(x2,y2) nh sau:
(y-y1)/( x-x1) = ( y2-y1)/( x2-x1)
(y-y1)(x2-x1)=(x-x1)(y2-y1)
Q(x2 , y2)
P(x1, y1)
k = (y2-y1)/(x2-x1) dc hay h s gc ca ng
m = y1- kx1on chn trn trc y
y = kx (tc l khi x thay i th y thay i theo)
m
Hnh 2.1 V on thng PQ
+ Biu din khng tng minh: ax+by+c=0
18
y 2 y1
(x x1 ) y1
x2 x1
19
Begin
putpixel(x,round(y),c);
for(int i=x1;i<=x2;i++)
{
m=dy/dx;
x++;
x=x1;
y=y+k;
y=y1;
putpixel(x,round(y),c);
}
}
x<x2
Ch :
- y=y+k nhanh hn hn y=k*x+m (kh c
php nhn vi s thc)
x=x+1;
y=y+m;
End
yi+1
d2
d1
yi
xi
xi+1
20
21
void Bre_line(int x1, int y1, int x2, int y2, int c)
{int x, y, dx, dy,p,const1,const2;
x = x1 ;
x=x1;y=y1;
y = y1;
y = y1;
dxdx=x2-x1;
= x2 - x1;
dy = y2 - y1;
dy=y2-y1;
P=
dx - 2dy;
dx = x2 - x1;
dy = y2 - y1;
p = 2*dy - dx;
const1 = 2*dy;
Putpixel (x ,y);
const2 = 2*(dy-dx);
P>0
No
x=x+1
putpixel(x, y, c);
yes
if (p < 0)
P = P - 2dy
p=p+2dy
y=y+1
else {
yes
p +=const2; //p=p+2dy-2dx
x < x2
y++;
no
}
}
Kt thc
22
23
Bt u
void Mid_line(int x1, int y1, int x2, int y2, int c)
x = x1 ;
y = y1;
dx = x2 - x1;
dy = y2 - y1;
d = dy - dx/2;
Putpixel (x ,y);
No
putpixel(x, y, c);
d = d + dy - dx
x=x+1
if (d <= 0)
yes
d = d + dy
d = d + dy;
y=y+1
else
{
yes
x < x2
y ++;
d = d + dy - dx;
no
}}
Kt thc
24
Bt u
X=0; y=r;
p=3-2r;
int x, y, p;
x = 0;
y = Radius;
p = 3 - 2 * Radius;
Putpixel(x,y,c);
while (x <= y)
{
X++
putpixel(xc + x, yc + y, color);
p<0
p=p+4x+6;
if (p < 0)
p=p-4y+4x+10
p += 4 * x + 6;
else
{
y--
p += 4 * (x-y) + 10;
X<r
y--;
}
d2
x++;}
}
25
26
int x, y, d;
x = 0;
y = Radius;
d = 1- Radius;
Putpixel(x,y,c);
while (x <= y)
{
X++
putpixel(xc + x, yc + y, color);
d<0
d=d+2x+3;
if (d< 0)
d +=2 * x + 3;
d=d+2x-2y+5
else
{
y--
d += 2 * (x-y) + 5;
X<r
y--;
}
x++;
End
}
}
F ( x, y ) = b 2 x 2 + a 2 y 2 a 2 b 2 = 0
27
A
M
B
tiep tuyen = -1
gradient
B
M
i
Hnh 2.11 M t gii thut sinh ng ellipse
Vector vi tip tuyn gradient =1
Ta c tip tuyn vi cung trn ( dc) = -1= dy/dx = - fx/fy
Trong fx=2b2x o hm ring phn ca f(x,y) vi x
V fy=2a2y o hm ring phn ca f(x,y) vi y
Gi s ta ch xt trn gc phn t th nht: gi s ta chia cung t (0,b) n (a,0) ti Q, c
dc -1
Trn phn 1: x thay i th y thay i theo
Trn phn 2: y thay i th x thay i theo
+ Xt trn phn 1:
Bt u t (0,b), bc th i (xi,yi) chn tip
A(xi+1, yi)
B(xi+1,yi-1)
Tham s quyt nh:
Pi = f(xi+1,yi-1/2) = b2(xi+1)2 + a2(yi-1/2)2 -a2b2
Pi+1 = f(xi+1+1,yi+1-1/2) = b2(xi+1+1)2 + a2(yi+1-1/2)2 -a2b2
Pi+1 - Pi = b2((xi+1+1)2 - (xi+1)2 )+ a2((yi+1-1/2)2 - (yi-1/2)2 )
Pi+1 = Pi + 2b2xi+1+ b2 + a2((yi+1-1/2)2 - (yi-1/2)2 )
- Nu Pi <0 chn A
xi+1=xi+1
yi+1=yi
Pi+1 = Pi + 2b2xi(xi+1) +b2 = Pi + 2b2xi +3b2
Hay Pi+1 = Pi + b2(2xi +3)
- Nu Pi >=0 chn B
xi+1=xi+1
yi+1=yi -1
Pi+1
28
29
30
+ bitmap: s dng hm copypixel (copy im nh) c lu tr trong b nh c nh Fontcache, a vo b nh m hin th. Mi 1 k t nh 1 ma trn 2 chiu ca cc im nh mt n.
Hm_sinh_ki_tu (mask)
{xmax, ymax, xmin, ymin //cc gii hn ca mt n
xo, yo//im gc trn b m hin th
for (i=ymin;i< ymax ;i++)
for (j=xmin; j< xmax ; j++)
if (mask(i,j) <> 0)
copypixel ((mask(i,j), pixel(xo+j, yo+i));
}
+ K t vector
31
triangular
convex non-convex
self-intersecting
religious
32
4-connected 8-connected
Hnh 2.15 Phng php tnh tin gii thut
Gii thut t mu ng bin:
#include <graphics.h>
#include <conio.h>
void FloodFill (int x, int y, int in_color, int new_color){
if (getpixel(x, y) == in_color){
putpixel(x, y, new_color);
FloodFill(x-1, y, in_color, new_color);
FloodFill(x+1, y, in_color, new_color);
FloodFill(x, y-1, in_color, new_color);
FloodFill(x, y+1, in_color, new_color);
}
}
void main(){
int gr_drive = DETECT, gr_mode;
initgraph(&gr_drive, &gr_mode, "");
circle(getmaxx() / 2, getmaxy() / 2, 15);
FloodFill(getmaxx() / 2, getmaxy() / 2, 0, 4);
getch();
closegraph();
}
33
yqmax
yq
yq
yqmin
x
Hnh 2.16 Gii thut scanline cho mt a gic bt k
gii quyt cc vn trn ta c cc phng php sau:
+ Danh sch cc cnh kch hot (AET - Active Edge Table)
Mi cnh ca a gic c xy dng t 2 nh k nhau Pi(xi,yi) v Pi+1(xi+1,yi+1) gm cc
thng tin sau:
ymin: gi tr nh nht trong 2 nh ca cnh
34
Pi-1
Pi+1
Pi-1
Pi+1
Pi
Pi
Pi-1
Pi
Pi+1
Pi+1
Pi-1
Pi
B
35
y
neo
neo
x
Tm tt chng:
Cc i tng ho c s cung cp cc cng c c bn nht cho vic xy dng cc nh
ho ca cc i tng phc tp. Cc on thng, ng cong, vng t, k t....l cc i tng
ho c s c hu ht tt c cc cng c lp trnh ho h tr.
c th hin th cc i tng ho trn thit b hin th dng im m in hnh l mn
hnh, cn phi c mt qu trnh chuyn cc m t hnh hc ca cc i tng ny trong h to
th gii thc v dy cc pixel tng ng gn vi chng nht trn to thit b. Qu trnh ny cn
c gi l qu trnh chuyn i bng dng qut. Yu cu quan trng nht i vi qu trnh ny
ngoi vic phi cho kt qu xp x tt nht cn phi cho tc ti u.
Ba cch tip cn v on thng gm thut ton DDA, thut ton Bresenham, thut ton
Midpiont u tp trung vo vic a ra cch chn mt trong hai im nguyn k tip khi bit
im nguyn bc trc. Thut ton DDA n gin ch dng thao tc lm trn nn phi dng
cc php ton trn s thc, trong khi thut ton Bresenham v Midpiont a ra cch chn phc
tp hn nhng cho kt qu tt hn. Tng t dng hai gii thut Bresenham v Midpiont v
ng trn v ellpise v mt s ng cong khc.
Cc thut ton t mu vng gm thut ton loang ( qui) hay thut ton dng qut. C th
t cng mt mu hay t theo mu.
Bi tp:
1. Ch nh cc v tr mnh no s c chn bi thut ton Bresenham lc chuyn qut mt
ng thng t to pixel (1,1) sang to pixel (8,5).
2. Dng gii thut Bresenham vit hm sinh on thng (xt tt c cc trng hp ca h s
gc).
3. Dng gii thut Midpiont vit hm sinh on thng (xt tt c cc trng hp ca h s
gc).
36
Bi tp trc nghim:
1. Xy dng gii thut tng qut v ng thng ta c xt h s k (h s gc ca ng)
s c tt c cc trng hp ca k:
a. 4
b. 3
c. 2
d. 1
2. biu din on thng thng qua phng trnh tham s nh sau:
a. y=f(x) hay y=kx+b
b. f(x,y)=0 hay ax + by +c =0
c. x(v)=x1 +v(x2-x1) v y(v) = y1 +v(y2-y1) c v [0,1]
d. P(u) = P1 + u(P2-P1) c u [0,1]
3. Khi xy dng gii thut v ng trn y ta ch cn vit phng trnh cho 1/8 ng
trn, ri gi i xng 8 cch. Khi xy ra hin tng overstrike. Vy im xy ra hin
tng l: (r l bn knh ca ng trn)
1 1
a. (0,r) v r , r
2 2
1
1
b. (r,0) hoc (0,r) v
r,
r
2
2
c. (0,r) v (-r,0)
d. (r,0) v (0,r)
4. Gii thut sau l gii thut g? V dng bao nhiu im ln cn?
void Function (int x, int y, int c1, int c2){
if (getpixel(x, y) == c1){
putpixel(x, y, c2);
Function (x-1, y, c1, c2);
Function (x+1, y, c1, c2);
Function (x+1, y+1, c1, c2);
Function (x-1, y-1, c1, c2);
Function (x, y-1, c1, c2);
37
a. 0<= k<=1
b. k>1
c. k<=-1
d. -1<k<0
6. Gii thut v ng thng sau v cho trng hp k l:
void Midline(int x1,int y1,int x2,int y2,int c){
int x=x1,y=y1,dx=x2-x1,dy=y2-y1,p=2*dy+dx;
while(x<x2) {
putpixel(x+320,240-y,c);
if(p<=0){
p=p+2*dy+2*dx;
y--;
}
else{
p=p+2*dy;
}
x++;
}}
a. k>=0 v k<=1
b. k>1
c. k<=-1
d. -1<k<0
38
39
40
y]
x
Hai hng v 1 ct:
y
Trong ti liu ny chng ta chn biu din im l ma trn hng (mt hng v 2 ct).
Tp cc im c lu tr trong my tnh s c vit di dng ma trn v tr ca chng.
Chng c th l ng thng, ng cong, nh....tht d dng kim sot cc i tng thng qua
cc php bin i chng, thc cht cc php bin i ho ny c m t di dng cc ma
trn.
c d
Gi ma trn T l ma trn bin i s c dng:
y
P
x
Hnh 3.1 Php bin i v tr
Ta c im P sau php bin i thnh P c gi tr [x y].
Thc thi php bin i ng trn 1 im nh s ng vi ton b i tng.
41
[X ]* [T ] = [x y]*
a b
'
'
= [(ax + cy ) (bx + dy )] = x y
c d
Hay ta c: x = ax + cy
y = bx + dy
Xt ma trn bin i T:
Php bt bin:
Khi : a = d =1 v b = c = 0 v ma trn cho php bt bin l:
1 0
T =
0 1
[X ]* [T ] = [x
1 0
y ]*
= [x
0 1
y ] = [x'
y ']
a 0
T =
0 1
x = ax
y = y
P dch chuyn theo trc x vi t l a xc nh.
[X ]* [T ] = [x
a 0
y ]*
= [(ax ) y ] = [x'
0 1
y ']
- Nu b = c =0 th ma trn bin i l:
a 0
T =
0 d
[X ]* [T ] = [x
a 0
y ]*
= [ax dy ] = [x'
0 d
y ']
Sx 0
T =
0 Sy
Khi Sx , Sy >1 gi l php phng to
Khi Sx, Sy <1 gi l php thu nh
- Cc trng hp c bit:
42
Sx=-1
P
Sy=-1
P
Sx=Sy=-1
P
i xng qua y
i xng qua x
i xng qua gc to
[X ]* [T ] = [x
1 b
y ]*
= [x bx + y ] = [x'
0 1
y ']
P
y=bx+y
bx
Hnh 3.3 Php bin dng theo trc oy
C P khng thay i gi tr to x, cn y thay i ph thuc vo c b v x
- Xt b = 0
[X]* [T ] = [x
1 0
y ]*
= [x + cy
c 1
cy
y ] = [x'
y ']
x=x+cy
P
43
= [rcos(+) rsin(+)]
P[x y]
cos
sin
[T ] =
sin
cos
0 1
T1 =
1 0
V [T2] ly i xng P qua gc to :
44
1 0
T2 =
0 1
Ta c:
[X '] = [X ]* [T1] = [x
0 1
y ]*
= [ y
1 0
[X "] = [X ']* [T 2] = [ y
x]
1 0
x ]*
= [ y x]
0 1
[X *] = [X ]* [T 3] = [x
0 1
y ]*
= [ y x]
1 0
Kt lun: bin i qua nhiu ma trn thnh phn s tng ng vi php bin i qua ma
trn tng hp t cc php bin i .
[T ] =
dx
dy
a b 0
[T ] = c d 0
dx dy 1
P ' = P.[T ] = [x
a b 0
y 1]* c d 0
dx dy 1
45
C a=d=1 v b=c=0
1 0 0
[T ] = 0 1 0
m n 1
1 0 0
[ x' y ' 1] = [ x y 1] 0 1 0 = [ x + m y + n 1]
m n 1
Ch : trong mt phng to , mi im k c gc to u c th bin i.
Php bin i tng hp ca hai php tnh tin theo khong [m1 n1] v [m2n2] bng php
bin i duy nht mt khong c gi tr bng tng ca hai php bin i [m1+m2n1+n2].
Tht vy:
0 0 1
0
0
1 0 0 1
[T1]* [T 2] = 0 1 0 * 0 1 0 = 0
1
0
m1 n1 1 m2 n2 1 m1 + m2 n1 + n 2 1
Php t l
Tng t ma trn t l:
Sx 0 0
[Ts ] = 0 Sy 0
0 0 1
[ x'
y ' 1] = [ x
Sx 0 0
y 1] 0 Sy 0 = [ x.Sx
0 0 1
y.Sy 1]
Ch : Php bin i tng hp ca hai php t l Sx1, Sx2 v Sy1,Sy2 bng php bin i
duy nht c t l l tch hai php bin i trn Sx1*Sx2, Sy1*Sy2.
Php quay
46
[ x'
y ' 1] = [ x
cos
y 1] sin
0
sin
cos
0
0
0
1
( x, y )
a b c p
d e f q
[T ] =
g i j r
l m n s
a b c
d e
f
Hay T =
g
i
h
dx dy dz
0
0
0
1 0 0
0 1 0
[T (dx, dy, dz )] =
0 0 1
dx dy dz
0
0
0
[X'] = [ X ] . [ T(dx,dy,dz) ]
[ x' y' z' 1 ] = [ x y z 1 ].[ T(dx,dy,dz)
]
= [ x+dx y+dy z+dz 1 ]
47
3.3. Php t l
Tng t trong 2D ta c php t l trong 3D l:
Sx 0 0 0
0 Sy 0 0
Ts =
0 0 Sz 0
0 0 0 1
Ta c Sx,Sy v Sz l cc h s t l trn cc trc
to
[X] = [X] . [T(Sx,Sy,Sz) ]
[ x'
y ' z ' 1] = [ x
Sx 0 0 0
0 Sy 0 0
z 1]
0 0 Sz 0
0 0 0 1
= [x.Sxy.Sy z.Sz 1]
[ x'
y ' z ' 1] = [ x
1 b
d 1
z 1]
g i
0 0
c
f
1
0
0
0
0
= [ x + yd + gz bx + y + iz cx + fy + z 1]
48
1 0 0
0 1 0
Mox =
0 0 1
0 0 0
0
0
0
1
0
Mxoy =
0
0 0
1 0
0 1
0 0
0
0
0
i xng qua gc O
1 0 0
0 1 0
Mo =
0 0 1
0 0 0
0
0
0
z' = z
cos
sin
[Tz ] =
0
sin
cos
0
0
0 0
0 0
1 0
0 1
49
x' = x
'
y = y cos z sin
z ' = y sin + z cos
0
1
0 cos
[Tx] =
0 sin
0
0
0
0
sin 0
cos 0
0
1
y' = y
cos
0
[Ty ] =
sin
0 sin
1
0
0 cos
0
0
0
0
0
50
=
.
.
0
0 1 0 0
0
1 0 0
0
0 1 x
x y 0 1 0
cos
sin
0
sin
cos
0
=
0
0
0
0 1
0 0
.
0 0
1 x
cos
sin
=
0
0
1
0
sin
cos
0
y (1 cos ) x sin )
0
1
0
y
0
0
1
0
0
0
0
1
0
1
0
y
0
0
1
0
0
0
0
0
0
0
51
y
b
c
z
a
x
sin =
cos =
[T ]
y
a
a + c2
2
c
a + c2
2
cos
0
=
sin( )
0 sin( ) 0
a2 + c2
1
0
0
0
=
a
0
cos
0
a2 + c2
0
0
1
0
Vect: V1 (0, b, a 2 + c 2
0
1
0
0
a
a +c
0
c
2
a2 + c2
0
0
0
Bc 2:
b
V1
c
V2
a
x
z
Hnh 3.16 Quay vector V1 quanh trc ox
sin =
cos =
b
a2 + b2 + c2
a2 + c2
a2 + b2 + c2
52
0
1
0 cos
[Tx ] = 0 sin
0
0
0
sin
cos
0
0
1
0
a2 + c2
0
0
a2 + b2 + c2
=
0
b
0
1
a2 + b2 + c2
0
0
0
b
a2 + b2 + c2
a2 + c2
a2 + b2 + c2
0
Tnh tin P v gc ta .
Chuyn trc L v trng vi trc OZ
Quay i tng xung quanh trc OZ mt gc .
Thc hin ngc li 2,1
tt
,Z
1
v
tt +
Tm tt:
Cc php bin i hnh hc cho php d dng thao tc trn cc i tng c to ra.
Chng lm thay i m t v to ca cc i tng, t i tng s c thay i v
hng, kch thc v hnh dng. Cc php bin i hnh hc c s bao gm tnh tin, quay v
bin i t l. Ngoi ra mt s php bin i khc cng thng c p dng l php i xng
v bin dng.
Cc php bin i hnh hc 2D u c biu din di dng ma trn ng nht 3x3 tin
cho vic thc hin cc thao tc kt hp gia chng. Trong h to ng nht, to ca mt
im c m t bi mt vector dng bao gm ba gi tr, hai gi tr u tng ng vi to
Descartes ca im , v gi tr th ba l 1. Vi cch biu din ny, ma trn ca php bin i c
c t s kt hp ca cc php bin i c s s bng tch ca cc ma trn ca cc php bin i
thnh phn.
Php bin i hnh hc 3D l s m rng ca php bin i 2D. Tng t n cng c cc
php: tnh tin, t l, bin dng v quay. Phc tp nht l php quay, nn chng ta kho st ln
lt t n gin n phc tp: quay i tng quanh cc trc to , quanh 1 trc song song vi
trc to , quanh 1 trc bt k....Do kho st cc php bin i affine vi biu din dng ma trn
ng nht (4x4 vi 3D) nn cng vic kh n gin v nht qun.
53
Bi tp:
1.
a. Hy tm ma trn biu th php quay mt i tng mt gc 600 quanh gc to .
b. Tm to mi ca P(-3,3) sau khi thc hin php quay trn?
2.
a. Hy vit dng tng qut ca ma trn iu chnh t l tng ng vi mt im c
nh Q(a,b)?
b. Phng ln t gic c cc nh A(0,0), B(1,3), C(4,2) v D(3,1) ln hai ln kch
thc ban u ca n trong khi vn gi im D(3,1)?
3.
a. M t php bin i nhm quay 1 i tng mt gc xung quanh mt tm c
nh Q(a,b)?
b. Thc hin php quay tam gic ABC c A(0,0), B(1,1) v C(4,2) mt gc 450 xung
quanh im (-1, -1)?
4. Cho ABC c cc to nh l A(2,2), B(3,1) v C(4,3). Xc nh ma trn bin i
affine bin i tam gic ny thnh ABC bit nh A(4,3), B(4,5) v C(7,3).
5.
a. hy tm mt ma trn dnh cho php phn chiu i xng gng xung quanh mt
ng thng G vi dc m v tung gc (0,g)?
P
G
54
Q
Q
M
x
z
b. p dng tm ma trn cho php i xng gng vi mt phng i qua gc to
v vector php tuyn c hng M=x+y+z.
8. Vit chng trnh vi i tng (ng thng, tam gic, t gic...) trong mt phng 2D
a. Dch chuyn (dng cc phm dch chuyn)
b. Phng ln, thu nh (dng phm dch chuyn hay g vo t bn phm)
c. Quay vi gc quay c g vo t bn phm (gc g vo c tnh bng )
9. Vit chng trnh vi i tng (hnh kim cng, hnh lp phng ...) trong 3D
a. Dch chuyn
b. Phng ln, thu nh
c. Quay mt gc
Bi tp trc nghim:
1. Cho ABC c cc to A(1,1), B(1,2) v C(3,4) thu nh tam gic ch cn m vn gi
c nh im A. To mi ca tam gic l:
a. A(1,1), B(1/4, 1/2) v C(3/4,1)
b. A(1,1), B(0.5, 1) v C(1.25,1.5)
c. A(0.25,0.25), B(1, 1.5) v C(0.75,2)
d. A(1,1), B(1, 1.25) v C(0.5,1.75)
2. Cho on thng AB c to A(2,3) v B(6,1) quay AB mt gc 600 vn gi c nh B.
To mi ca AB l:
a.
b.
c.
d.
(( ) (
))
A ((4 3 ), ( 2 3 + 2)) v B(6,1)
1
A 2 3 , ( 3 + 1) v B(1,6)
A (( 1 + 3 ), (4 3 + 1)) v B(6,1)
A ' 1 3 , 3 + 2 v B(6,1)
'
'
'
55
((
)(
a. A(2,1,1), B ' 1 3 ,
))
3 + 2 ,3
A ' 2 3 , 3 + ,4 , B(1,3,4)
2
b.
((
)(
c. A(1,3,5), B ' 1 3 ,
))
3 + 2 ,3
3
, 3 ,4
d. A(2,1,1), B ' 2 1
6. Cho ABC trong khng gian c to A(1,1,1), B(4,6,0) v C(2,-1,3) ko dn cho tam
gic rng ra (theo hng trc ox) ln 2 ln vn gi c nh B. To mi ca ABC l:
a. A(2,1,1), B(4,6,0) v C(2,-1,3)
b. A(-2,1,1), B(4,6,0) v C(0,-1,3)
c. A(2,1,1), B(2,3,1) v C(2,-1,1)
d. A(2,2,2), B(4,6,0) v C(1,-0.5,1.5)
7. Cho hnh kim cng ABCD c cc to l A(4,6,1), B(1,2,3), C(2,2,5) v D(7,2,4). i
xng gng hnh kim cng qua trc ox, to mi ca hnh kim cng l:
a. A(4,6,-1), B(1,2,-3), C(2,2,-5) v D(7,2,-4)
b. A(-4,6,-1), B(-1,2,-3), C(-2,2,-5) v D(-7,2,-4)
c. A(4,-6,-1), B(1,-2,-3), C(2,-2,-5) v D(7,-2,-4)
d. A(-4,-6,-1), B(-1,-2,-3), C(-2,-2,-5) v D(-7,-2,-4)
8. Cho hnh kim cng ABCD c cc to l A(5,6,1), B(0,0,0), C(3,2,5) v D(8,2,4). Quay
hnh kim cng quanh trc oy v vn gi c nh B. To mi ca hnh kim cng l:
a. A(-1,5,-1), B(0,0,0), C(2,3,-3) v D(2,4,8)
b. A(1,6,-5), B(1,2,2), C(5,2,-3) v D(2,-4,8)
c. A(-1,5,-1), B(0,0,0), C(2,3,5) v D(2,4,8)
d. A(1,6,-5), B(0,0,0), C(2,5,-3) v D(2,4,-8)
9. Trong on m sau cc s t , , , ln lt l cc phm mi tn dch chuyn:
c = getch();
switch (c)
{
case 75: x -= 10; //
break;
case 77: x += 10;//
break;
case 72: y -= 10; //
56
57
58
59
60
xv xv max
x x w min
= w
xv max xv min x w max x w min
yv yv max
y yw min
= w
yv max yv min yw max yw min
Ta c:
61
xv =
( xv max xv min )
( x w xw min ) + xv max
( x w max x w min )
yv =
( yv max yv min )
( yw yw min ) + yv max
( yw max yw min )
1
[Ttt ] = 0
x w
0
1
yw
0
0
1
xv max xv min
x
x w min
w max
[T s ] =
0
0
yv max yv min
y w max y w min
0
1
[Ttt ] = 0
xv
0
1
yv
0
0
1
xv max xv min
x w max x w min
[T ] =
0
yv min
y v max y v min
y w max y w min
y
yv min
y w min . v max
y w max y w min
62
2.2. Clipping im
Gi s (x,y) l to ca mt im, vy im c hin th khi tho mn:
Xmin <= x <= Xmax
Ymin <= y <= Ymax
2.3. Xn ta on thng
63
B(1000)
D(1010)
ymax
A(0001)
ymin
xmin
C(0100)
xmax
xi = xmin / xmax
x = xmin
yi = y1 + m( xi x1 ) x = xmax
Hoc:
64
xi = x1 + ( yi y1 ) / m y = y min
y = y max
yi = y min / y max
C m l dc ca on thng
m=(y2-y1)/(x2-x1)
By gi thay im cui (x1,y1) vi im ct (xi,yi)
V d: Cho ca s ct ta hnh ch nht c gc tri di L(-3,1), gc phi trn R(2,6)
Hy tm m vng dnh cho cc im cui ca cc on AB c A(-2,3), B(1,2) ; CD c C(4,7), D(-2,10) ; IK c I(-4,2), K(-1,7)
Tm hng mc ct ta ca chng
Gii:
- M vng
Bt 1 = sign(y-ymax) = sign(y-6)
Bt 2 = sign(ymin-y) = sign(1-y)
Bt 3 = sign(x-xmax) = sign(x-2)
Bt 4 = sign(xmin-x)= sign(-3-x)
Qui c sign(a) = 1 nu a dng
= 0 nu a m
Vy:
A(-2,3) c (0000)
B(1,2) c (0000)
C(-4,7)c (1001)
D(-2,10) c (1000)
I(-4,2) c (0001)
K(-1,7) c (1000)
- Hng mc ct ta
AB c m vng u l (0000) nn n nm hon ton trong
CD c (1001) and (1000) = (1000) (!= (0000)) nn hon ton nm ngoi
IK c (0001) or (1000) =(1001) v (0001) and (1000) =(0000) nn phi xn ta.
Xt I(0001) da trn ng bin xmin =-3
xc = xmin
yc = y1 + m( xc x1 )
xmin = -3
m=(y2-y1)/x2-x1)= (7-2)/ (-1-(-4)) = 5/3
yc=2 + 5/3 (-3-(-4)) = 11/3
Thay I bi I1 (-3,11/3) (c m vng 0000)
Xt K(1000) ct ymax =6
xc = x1 + ( yc y1 ) / m
yc = y max
yc=6
xc=-1 +(6-7)/(5/3)=-8/5
Thay K bi K1(-8/5,6) c m vng 0000)
65
P1(x1,y1)
U1=0
P(u)
P2(x2,y2)
U2=1
O
Hnh 4.10 Phng trnh tham s cho on thng
x=x(u)
c 0<=u<=1
y=y(u)
V vect ch c mt chiu nn vect v tr:
P(u)=P1 + (P2-P1).u
x = x1 + (x2 - x1)u = x1 + x.u
y = y1 + (y2 - y1)u = y1 + y.u
top
P2
ymax
left
P1
Ul
U1=1
Ur
Ut
U0=0
right
ymin
Ub
bottom
xmin
xmax
66
67
q
U1 = max {0} uk : uk = k , Pk < 0
Pk
q
U 2 = min {1} uk : uk = k , Pk > 0
Pk
u1=-2/5 (uk=qk/pk)
P2 = 5 q2=6
u2=6/5
P3 = -2q3=0
u3=0
P4 = 2 q4=6
u4=3
u1=1/6
P2 = 12 q2=10
u2=5/6
P3 = 6q3=5 u3=5/6
P4 = -6 q4=1
u4=-1/6
68
triangular
convex non-convex
self-intersecting
religious
L
R
Kho st mt im so vi mt ng thng:
ABxAP
K
P(x,y)
A(x1,y1)
B(x2,y2)
69
C = ( x2 x1 )( y y1 ) ( y 2 y1 )( x x1 )
- Nu C dng th P nm bn tri AB
- Nu C m th P nm bn phi AB
output
Pi
Pi-1
Pi-1
output
Pi
Pi-1
Pi
I
B
Pi
Pi-1
I
output
output
Hnh 4.15 Cc trng hp trong gii thut Hodgman
Nu c Pi-1 v Pi u nm bn tri ca cnh ny th Pi c lu li (a vo output) ca
a gic ct ta.
Nu c Pi-1 v Pi u nm bn phi ca cnh th khng c nh no c lu li.
Nu Pi-1 nm bn tri v Pi nm bn phi ca cnh th giao im I ca Pi-1Pi vi cnh s
c lu li.
Nu Pi-1 nm bn phi v Pi nm bn tri th c giao im I v Pi u c lu li.
2.4.3. Minh ho thut ton Sutherland Hodgman
F=P1 (F l nh c a vo u tin, S l nh a vo trc P - nh c a). S
bn phi khp kn a gic bi PNP1
70
Begin
P(Vertex Input)
Vertex Output, F,AB,N
Tip
N
I=1
S=Pi
SF ct AB
Y
i=1
N
i++
F=P1
Tm giao I
N
SPi ct
AB
Vertex output I
Y
Giao ct I
End
Vertex output
I
S=Pi
Y
N
i<N
N
Y
S bn tri
AB
Vertex output
S
End
Hnh 4.16 S khi thut ton Hodgman
71
A
A4
A1
B4
B1
A2
B2 B
B3
A3
C5
A
C4
D5
D
D4
C1
D1
C2
C3
C
D2
D3
E5
E4
E1
E2
E3
D(1,3)
I2
P2(6,4)
I1
C(5,3)
I3
P1(-1,2)
A(1,1)
B(5,1)
72
m=
42
2
=
6 (1) 2
xc = 5
y = y + ( x x )m = 2 + (5 (1)). 2 = 3 5
1
c
1
c
7
7
I1(5,26/7) vyP1I1 lu li
CD
im P1: C = (1-5)(2-3) = 4 >0 nm bn tri
im I1:C=(1-5)(26/7 -3) = -20/7 <0 nm bn phi
Giao im I2:
yc = 3
xc = x1 + ( y c y1 ) / m
= 1 + (3 2). 7 = 5
2 2
VyI2(5/2,3)c P1I2c lu
DA
im P1: C = -(1-3)(-1-1) = -4nm bn phi
im I2: C = -(1-3)(5/2-1) = 7/2nm bn tri
Giao im I3:
xc = 1
y c = y1 + ( xc x1 )m
= 2 + (1 (1)). 2 = 2 4
7
7
I3(1, 18/7)
Tm li: Ct xn on P1P2 c on I2I3c I2(5/2,3) v I3(1,18/7)
Tm tt chng:
Hin th i tng l qu trnh a cc m t i tng t th gii thc sang mt thit b
xut c th no . Mi i tng c th c quan st nhiu v tr v gc khc nhau. Thng
73
Bi tp:
1.
2.
3.
4.
5.
6.
Bi tp trc nghim:
1. H to thit b chun (NDCS) c kch thc mn hnh hin th l hnh ch nht c
chiu di gp i chiu rng. Vy nu mt hnh ch nht ng (c chiu di gp i chiu
rng khi hin th trn mn hnh s cho:
a. Hnh ch nht nm ngang (chiu di gp i chiu rng)
b. Hnh vung
c. Vn l hnh ch nht ng
d. Hnh ch nht c chiu di gp 1.5 chiu rng
2. Php bin i chun ho to nh x cho mt ca s m gp bn tri pha di (1,3) v gc
bn phi trn (4,7) vo mn hnh c chun ho ton b l:
74
0
0
3
1
a. 0
0
4
1 3 1 1
3
4
1
3 1
b. 0 2
0
0
1
3
c. 0
1
4
2
0
1
0
3
1
3
1
4
0
2
1
d. 0
1
3
0 34
1
3
3 2
a. 3 ,5 3 ,3
5 5
75
1 3
b. 3 ,2 3,3
5 5
1 2
c. 5,3 7 ,2
5 5
2
3
d. 2,5 5,7
5
5
6. Cho ca s ct ta c gc tri di (1,2) v phi trn (9,8). on thng MN c M(-1,7) v
N(11,1), sau khi xn ta ta thu c on thng c to l:
a. (2,6) v (7,1)
b. (5,2) v (9,1)
c. (1,6) v (9,2)
d. (3,9) v (6,3)
7. Gii thut LyaBarsky da vo phng trnh ng thng:
a. Tng minh y=f(x)
b. Khng tng minh f(x,y) = 0
c. Tham s x = x(t), y = y(t) c t [0,1]
d. Do ng a ra
8. Trong cc cu ni sau cu no sai ?
a. on thng c hin th khi c hai u cui u trong ca s hin th
b. on thng nm hon ton ngoi khi n phm bt k mt trong bn bt ng thc
sau:
x1,x2>xmaxx1,x2 <xminy1,y2 >ymaxy1,y2 <ymin
c. on thng c hin th khi:
P1.m or P2.m ==0000 (P1,P2 l hai im cui)
d. on thng nm hon ton ngoi khi n tho mn mt trong bn bt ng thc
sau:
x1,x2 >=xmaxx1,x2 <=xmin y1,y2 >= ymaxy1,y2 <= ymin
9. on m sau ci t gii thut Cohen Sutherland, gn m vng 4bt cho mi im cui ca
on thng xn ta. T gii thut c hc bn hy cho bit th th t , , , s c m
vng ln lt s l:
#define EDGE_10x1
#define EDGE_2 0x2
#define EDGE_3 0x4
#define EDGE_4 0x8
76
77
a.
b.
c.
d.
Cohen Sutherland
Lyabarsky
Hodgman
Khng phi gii thut xn ta
78
1.2. c im ca k thut ho 3D
C cc i tng phc tp hn cc i tng trong khng gian 2D
- Bao bi cc mt phng hay cc b mt
- C cc thnh phn trong v ngoi
Cc php bin i hnh hc phc tp
Cc php bin i h to phc tp hn
Thng xuyn phi b xung thm php chiu t khng gian 3D vo khng gian 2D
Lun phi xc nh cc b mt hin th
79
Perspective
(phi Shadows as depth cues (to bng cm
cnh) and Depth of gic c chiu su)
Field (chiu su)
Exploded/cutaway
scenes (ct lt)
Hnh chiu ng
80
x2 + y2 + z2 = r2
a gic
(Polygonal)
M hnh 3D
(3D Modelling)
Nt khut
(Implicit)
x = sin 4
y = cos 2
Tham s
(Parametric)
Mnh nh
(Particles)
2.PHP CHIU
nh ngha v php chiu
Mt cch tng qut, php chiu l php chuyn i nhng im ca i tng trong h
thng ta n chiu thnh nhng im trong h thng ta c s chiu nh hn n.
nh ngha v hnh chiu
nh ca i tng trn mt phng chiu c hnh thnh t php chiu bi cc ng
thng gi l tia chiu (projector) xut pht t mt im gi l tm chiu (center of projection) i
qua cc im ca i tng giao vi mt chiu (projection plan).
Cc bc xy dng hnh chiu
1. i tng trong khng gian 3D vi ta thc c ct theo mt khng gian xc nh
gi l view volume.
2. View volume c chiu ln mt phng chiu. Din tch chon bi view volume trn mt
phng chiu s cho chng ta khung nhn.
3. L vic nh x khung nhn vo trong mt cng nhn bt k cho trc trn mn hnh
hin th hnh nh.
81
ta thc
3D
ta theo vng
ct
Ct theo view
volum
ta thit
b
khung nhn
Php bin i vo
cng nhn ca
ta thit b
Php chiu
Xin
Trc giao
Mt im
Axonometric
Chiu
bng
Hai im
Cavalier
Trimetric
Chiu
ng
Cabinet
Chiu
cnh
Ba im
Dimetric
Isometric
Php chiu
khc
82
1
0
[Ty ] =
0
0 0 0
0 0 0
0 1 0
0 0 1
0
0
[T x ] =
0
0 0 0
1
0
1 0 0
[Tz ] =
0 1 0
0
0 0 1
0
0
1
0
0
0
0
0
0
0
0
0
83
x x'
'
x
[T ] = y'
xz
y x'
'
y
'
z
y
y
0
0 1
0 1
0 1
0 1
84
f x = x x'2 + y x'2
f z = x'2z + y '2z
[T ] = [ Ry ][ Rx][ Pz ]
0
cos 0 sin 0 1
0
1
0
0 0 cos
=
.
sin 0 cos 0 0 sin
0
0
1 0
0
0
0
0 1
sin 0 0
.
cos 0 0
0
1 0
cos
0
[T ] =
sin
y x'
y 'y
sin sin
cos
cos sin
0
0 0 x x'
0 0 x 'y
= '
0 0 x z
0 1 0
y z'
0
0
1
0
0
0
0
0
0
0
0
0
0 0
0 0
0 0
0 1
sin 2 =
sin 2
1 sin 2
sin 2 =
f z2 sin 2
sin 2
=
1 sin 2
1 sin 2
sin 2 =
fz
2
= sin 1 (
fz
2 f z2
f
= sin 1 ( z )
2
fz = 0
fz =1/2
fz = 1
= sin 1 (
2 2
1/ 2
= sin 1 (
) = sin 1 (0.378) 22.208
7/4
sin 2 =
1 2 sin 2
1 sin 2
sin 2 =
sin 2
1 sin 2
86
1
3
= 35.26 0
sin =
sin 2
1/ 3
=
= 1/ 2
2
1 sin 1 1 / 3
1
sin =
2
0
= 45
sin 2 =
= 35.260
= 450
f = cos 2 = 2 / 3 = 0.8165
othergraphic
oblique
Dimetric
isometric
Hnh 5.10 V d cc php chiu song song
87
0 0
1
T '= 0
1 0
a b 1
Trong khng gian ba chiu, f l chiu di ca hnh chiu vect n v trc z trn mt phng
chiu, chnh l h s co.
0
1
0
1
[T ' ' ] =
a b
0
0
0 0
0 0
0 0
0 1
a = f cos
b = f sin
0
[T ] =
f cos
0
1
f sin
0
0 0
0 0
0 0
0 1
Cn vi f = 1 kch thc ca hnh chiu bng kch thc ca i tng => cavalier
Php chiu Cavalier cho php gi tr ca a bin i mt cch t do a = 300 v 450
88
f
1 + f2
2
2
) = 63.4350
12 + (1 2 ) 2
D/2
D
D
89
Mt tm chiu
1 point Perspective
Hai tm chiu
Ba tm chiu
2 point Perspective
3 point Perspective
90
D
H
E
A
z
A E
F B
0 0 0
1 0 0
0 1 r
0 0 1
1
0
0 0 0 1
1 0 0 0
=
0 0 0 0
0 0 1 0
0 0 0
1 0 0
0 0 r
0 0 1
[x
1
0
z 1]
0
0 0 0
1 0 0
= [x
0 0 r
0 0 1
y 0 rz + 1]
y
x
y ' z ' 1] =
0 1
rz + 1 rz + 1
[x'
VP (y=10)
VP y = 10
D H
C,G
VP
X=10
D, HC, G
VP( x = 10)
A, EB, F
5.16 Php chiu phi cnh hai tm chiu
91
[ Tc ] = [ Tpq ][ Tz ]
1
0
=
0
0
1
0
[Tpq ] =
0
[x
[x'
1
0
z 1]
0
p
q
0 1 0
0 0 1
0 0
1 0
0 0
1 0
0 1
0 0
1
0
0 0 0 1
1 0 0 0
=
0 0 0 0
0 0 1 0
0 0 p
1 0 q
0 0 0
0 0 1
p
q
0
0 0
1 0
0 1
0 0
p
q
= [x
0
x
y ' z ' 1] =
( px + qy + 1)
z ( px + qy + 1)]
y
( px + qy + 1)
z
1
( px + qy + 1)
p
0
0 1 0
0 0 1
0 0
1 0
1
0
1
0
.[Tz ] =
0
[Tc ] = [T pqr ]
[x
1
0
z 1]
0
0 0 0
1 0 q
0 1 0
0 0 1
0 0
1 0
0 1
0 0
1
0
0 0 0 1
1 0 0 0
=
0 1 r 0
0 0 1 0
p 1
q 0
.
r 0
1 0
0 0 p
1 0 q
= [x
0 1 r
0 0 1
0 0 p
1 0 q
0 1 r
0 0 1
0 0 0 1
1 0 0 0
=
0 0 0 0
0 0 1 0
0 0
1 0
0 0
0 0
p
q
r
z ( px + qy + rz + 1)]
92
[x'
x
y ' z ' 1] =
( px + qy + rz + 1)
y
( px + qy + rz + 1)
z
1
( px + qy + rz + 1)
y'
y'
VP ( y = 10)
H'
D'
D'
H'
G'
C'
E'
G'
C'
VP ( x = 10 )
VP ( z = 10 )
F'
A'
x'
x'
z'
A', E'
F'
B'
B'
Tm tt chng:
Chng ta xt hai php chiu song song v phi cnh, trong php chiu song song th phn ra
cc loi: trc giao, trc lng v php chiu xin. Php chiu trc giao ch n gin l b i mt
trong ba to ca im chiu bng cch cho cc tia chiu song song vi mt trong cc trc to
. Php chiu trc lng th quay i tng khi thy c r nht i tng ri mi cho cc tia
chiu song vi cc trc to . Php chiu xin th tia chiu khng song song vi trc to m
thay bng n lm vi cc mt phng chiu mt gc khng vung.
Php chiu phi cnh th s dng mt im c nh gi l tm chiu v hnh chiu ca cc
im c xc nh bng giao im ca tia chiu (ni im chiu v tm chiu) vi mt phng
quan st. Php chiu phi cnh hi t ti mt nn i tng cng xa trng cng nh v ngc li.
Bi tp:
1. Cho Hnh vung ABCD c cc to l: A(0,0,0), B(0,2,0), C(2,2,2) v D(2,0,2). Tnh
to mi ca hnh vung sau khi chiu n bi php chiu Isometric?
2. Cho Hnh vung ABCD c cc to l: A(0,0,0), B(0,2,0), C(2,2,2) v D(2,0,2). Tnh
to mi ca hnh vung sau khi chiu n bi php chiu Dimetric vi fz=1/2 (t l co theo trc
z)?
93
Mt tm chiu ti P(0,0,10)
4. Vit chng trnh chiu hnh kim cng (ABCD) vi php chiu trc giao.
5. Vit chng trnh chiu hnh lp phng vi php chiu
Trimetric
Dimetric
Isometric
6. Vit chng trnh chiu hnh kim cng (ABCD) vi php chiu xin
Cavalier
Cabinet
7. Vit chng trnh chiu hnh lp phng vi php chiu phi cnh.
Bi tp trc nghim:
1. Php chiu l php chuyn i nhng im ca i tng trong h thng ta n chiu
thnh nhng im trong h thng ta c s chiu l ......Cc phng n sau in vo
chm chm th phng n no sai:
a. C s chiu nh hn n
b. Thng l (n-1)
c. Tng qut l s chiu nh hn n, thng (n-1)
d. C s chiu (n+1)
2. Chng trnh AutoCad s dng php chiu:
a. Trc giao
b. Trc lng
c. Xin
d. Phi cnh
3. Php chiu Dimetric l php chiu song song c cc tia chiu vung gc vi mn chiu,
hnh chiu thu c sau khi quay i tng sao cho 3 mt ca i tng c trng thy
(thng mt phng chiu l z=0) v h s co .... Phng n no in vo chm chm l
ng?
a. fx fy fz
b. fx = fy
c.
fx = fy = fz =
2
3
d. fx = fy = fz = 1/2
4. Php chiu trimetric l php chiu song song c cc tia chiu vung gc vi mn chiu,
hnh chiu thu c sau khi quay i tng sao cho 3 mt ca i tng c trng thy
(thng mt phng chiu l z=0) v h s co .... Phng n no in vo chm chm l
ng?
94
fx = fy = fz =
2
3
d. fx = fy = fz = 1/2
5. Php chiu Isometric l php chiu song song c cc tia chiu vung gc vi mn chiu,
hnh chiu thu c sau khi quay i tng sao cho 3 mt ca i tng c trng thy
(thng mt phng chiu l z=0) v h s co .... Phng n no in vo chm chm l
ng?
a. fx fy fz
b. fx = fy
c.
fx = fy = fz =
2
3
d. fx = fy = fz = 1/2
6. Hnh sau l hnh chiu:
95
D
D
D/2
D
a. Phi cnh mt tm chiu
b. Phi cnh hai tm chiu
c. Cabinet
d. Cavalier
11. Cho on thng AB c to l A(2,6,1) v B(-1,2,-3) php chiu phi cnh mt tm
chiu P(0,0,5) on thng AB ta thu c to mi ca AB l:
a. (-1.5, 5.5) v (-0.25, 2.125)
b. (2.5, 7.5) v (-0.625, 1.25)
c. (3.5, -7.5) v (-0.65, 1.5)
d. (-4.5, 1.25) v (0.25, 2.5)
12. Cho on thng AB c to l A(1,4,-2) v B(3,-1,7) php chiu phi cnh hai tm
chiu M(10,0,0) v N(0,-5,0) on thng AB ta thu c to mi ca AB l:
96
17 17
a. , v (3,-1)
10 40
12 43
b. , v (-2,6)
15 15
10 40
c. , v (5,2)
17 17
10 40
d. , v (6,-2)
17 17
13. Cho on thng AB c to l A(2,-5,3) v B(-1,4,0) php chiu phi cnh ba tm chiu
M(4,0,0) , N(0,12,0) v P(0,0,-10) on thng AB ta thu c to mi ca AB l:
10 25 20 80
a. , ,
9 9 9
9
9 9 9
9
b. , ,
10 25 20 80
1 24 22 70
c. , ,
9
9 9 9
10 25 20 80
d. , ,
11 11 11 11
14. on m sau l thuc bi ...quay mt i tng quanh trc to ... php quay trong
3D. Hy cho bit trc m i tng quay quanh:
#define RADS 0.017453293// i ra radian
struct point{
int x,y,z;
}
point quay(int &x, int &y, int &z, int goc , int chieu)
{
point p;
if(chieu==1)
{
p.x = x*cos(RADS*goc) + z*sin(RADS*goc);
p.z = -x*sin(RADS*goc) + z * cos(RADS*goc);
p.y = y;
}
.........
return p;
}
a. ox
b. oy
c. oz
d. C ba u sai
15. on m sau l thuc bi ...quay mt i tng quanh trc to ... php quay trong
3D. Hy cho bit trc m i tng quay quanh:
97
a. ox
b. oy
c. oz
d. C ba u sai
16. on m sau l thuc bi ...quay mt i tng quanh trc to ... php quay trong
3D. Hy cho bit trc m i tng quay quanh:
#define RADS 0.017453293// i ra radian
struct point{
int x,y,z;
}
point quay(int &x, int &y, int &z, int goc , int chieu)
{
point p;
//.................
if(chieu==3)
{
p.x = x*cos(RADS*goc)-y*sin(RADS*goc);
p.y = x*sin(RADS*goc)+y*cos(RADS*goc);
p.z = z;
}
return p;
}
a. ox
b. oy
c. oz
d. C ba u sai
98
Chng 6: Mu sc trong ha
CHNG 6: MU SC TRONG HO
1. NH SNG V MU SC (light and color)
1.1. Quan nim v nh sng
1.2. Yu t vt l
nh sng ph thuc vo mc nng lng c truyn hay bc sng ca nh sng. nh
sng trng hay di sng m mt ngi c th cm nhn c, sau khi phn tch qua lng knh
thnh cc ph mu: tm, chm, lam, lc, vng, da cam, .nh sng l sng in t c bc
sng i t 400nm 700nm.
99
Chng 6: Mu sc trong ha
10
Radio Frequency
10
10
1 2
1 4
10 10
1 5
Microwaves Infrared
10
1 8
X-Rays
10
2 2
-Rays
Ultraviolet
Visible Spectrum
Mu sc
Isaac Newton - nh sng trng i qua thu knh thu tinh s pht tn ra thnh ph cc
mu cu vng
100
Chng 6: Mu sc trong ha
Chm sng khi phn tch thnh ph mu c lin quan n ph nng lng I().
350
780
Rods (t bo que): cho cm nhn cng nh sng thp hay trong bng ti
Cones - t bo hnh nn
Nhy cm vi nh sng mu sc
Chia lm 3 loi nn - cone
Ba loi s c ba gi tr gi l tristimulus values cm nhn tng ng trn 3 mu c bn
v gi n no nhng tn hiu to ra cm nhn v mu sc S-M-L.
t c mt s cm nhn v mt mu bt k ta phi xc nh gi tr ca 3 i lng
ny
101
Chng 6: Mu sc trong ha
-
56
27
86
88
102
Chng 6: Mu sc trong ha
Yu t cm nhn sinh l:
-
P( )d
Tnh pht sng cng cao, th sng cng sng hn i vi ngi quan st.
- Sc (shade): phn bit nh sng trng vi nh sng vi nh sng xanh. i vi
nh sng c s phn b quang ph l tng nh hnh di, sc thch ng vi mt tnh cht vt
l khc c gi l bc sng tri ca s phn b.
P()
Pure color
White
(nm)
400
700
Hnh 6.9 Phn b quang ph ca nh sng
103
Chng 6: Mu sc trong ha
- bo ho (Saturation): m t mc chi li ca nh sng. V d hai nh sng mu
c th khc nhau tnh pht sng/ sng v chng c th khc nhau mc chi li (v d
mu ti/bo ho khc vi mu ti/ khng bo ho). Chng ta c:
mu ti
bo ho =
Mu ti + mu trng
2. NH SNG N SC
Khng cm nhn c cc sc mu khc nh vng, , tm khi quan st trn mn hnh
en trng
nh lng l thuc tnh duy nht ca cc tia sng n sc v v mt vt l n c tnh
bng nng lng ca tia sng c m t cng (intensity) hay chiu sng (luminance).
Di gc cm nhn v mt tm l th cng ca tia sng chnh l sng ca vt
(brighness)
S dng ph k - photometer o sng thp nht (min) v cao nht (max) ca mn
hnh. V l khong ng.
Khong cng nhn gi tr min l I0, n max l 1.0. Lm th no th hin c 256
mc xm khc nhau?
I0=I0
I1 = rI0
I2 = rI1 = r2I0
I255=rI254=r255I0=1
2.2. Php hiu chnh gama
Ta c I = K.V hay V = (I / K)1/
Trong V in p t l vi N trn mi im nh.
104
Chng 6: Mu sc trong ha
Gi s chng ta c mt cng sng I th bc u tin ta phi lm l tm ra gi tr Ij gn
nht qua php lm trn. Gi tr j tm c I= rjI0 vy rj=I/I0 suy ra j = ROUND(logr ( I / I0 )).
Thay j vo cng thc ta c:
Ij = rj . I0
Bc tip theo ca tin trnh l xy dng mc in p Vj cho im nh m cng nh
sng c gi tr tng ng l Ij.
Vj = ROUND( Ij / K )1/
Ta thy cng sng l nh nhau cho cc mn hnh (hay nh l nh nhau), th ch cn
thay i gi tr gama. Gi tr gama l s m ca hm lu tha, gi tr i vi loi phim nha
35mm trong phng ti l 1.5. Nhng h s gama ca CRT l loi thit b sng ph thuc vo
ng phng tia in t. Thc t gi tr gama ca CRT dao ng t 2.3 n 2.6.
Ta c s phn hi tuyn tnh ca CRT c th c b bi phn cng v php b ny gi l
php hiu chnh gama (Gama correction). Vic s dng Ij lm ch s trong Lookup table (LUT)
tm ra cng sng cho cc im nh trn mn hnh gi l php hiu chnh gama vi bng LUT.
Vy bao nhiu khong s l nh cho vic th hin mt im nh en trng l lin tc? Theo
tnh ton th r=1.01 l mc ngng phn bit ca mt. Nu r<1.01 th mt s khng phn bit
c s khc lnh gia hai cng ln cn nhau Ij v Ij+1.
r=(1/I0).1/n =1.01 vy n=log1.01(1/I0) vi (1/I0) l khong bin ng ca thit b phn cng.
105
Chng 6: Mu sc trong ha
Ta thy vi phng php ny mt i nhiu thng tin ca nh gy ra mt s hiu ng ph
cho nh. gii quyt ta dng phng php sau:
Mu t: ta biu din mt im nh trn mn hnh theo cc mu t. n v nh nht ca nh
li l 2x2 ta c 5 mc th hin cng sng ca vng n v. Ma trn li kch thc
nxn chng ta c n2+1 phn gii khc nhau. Hnh di y l ma trn 3x3 v cc n v m l 0
n 9.
Th hai: Cc mu phi c hnh thnh theo chui cc bc lin tip nhau sao cho mi
im nh c mt th hin ngng a u phi c mt th hin mi ngng b vi b
> a.
106
Chng 6: Mu sc trong ha
(2 )
0 2
=
3 1
(n )
4 D (n / 2 ) + D00(2 )U (n / 2 )
= (n / 2 )
+ D10(2 )U (n / 2 )
4 D
4 D (n / 2 ) + D01(2 )U (n / 2 )
4 D (n / 2 ) + D11(2 )U (n / 2 )
D ( 4)
0
4
3
=
0
4 3
2 1
+0
1 1
2 1
+3
1 1
1
0
4
1
3
1
0
4
1
3
2 1
+2
1 1
2 1
+1
1 1
1
1
1
0 8 2 10
( 4 ) 12 4 14 6
D =
3 11 1 9
15 7 13 5
107
Chng 6: Mu sc trong ha
3. CC H MU TRONG MN HNH HA
M hnh mu - color model: l h thng c quy tc cho vic to khong mu t tp cc mu
c bn.
C 2 loi m hnh mu l:
- Mu thm (additive): m hnh mu thm s dng nh sng - light hin th mu.
Mu sc ca m hnh ny l kt qu ca nh sng truyn dn - transmitted
- Mu b (subtractive): m hnh mu b s dng mc in - printing inks. Mu sc cm
nhn c l t nh sng phn x - reflected light (ly mu tri).
Khong mu m chng ta to ra vi tp cc mu c bn gi l gam mu h thng (systems
color gamut)
Mi m hnh mu c khong mu hay gam mu ring gamut (range) ca nhng mu m n
c th hin th hay in.
Mi m hnh mu c gii hn khong ca ph mu nhn c. Gam mu hay khong cn
c gi l khng gian mu "color space". nh hay ho vector c th ni: s dng khng gian
mu RGB hay CMY hay bt c khng gian mu no khc.
Mt s ng dng ho cho php ngi dng s dng nhiu m hnh mu ng thi
son tho hay th hin i tng hnh hc. im quan trng l hiu v cho ng m hnh cn
thit cho cng vic.
C ba h mu nh hng phn cng:
- RGB (Red, Green, Blue) dng vi CRT
- YIQ trong h thng tivi mu bng tn rng
- CMY (Cyan, Mangenta, Yellow) s dng mt s thit b in mu
Khng c mt m hnh mu no trong cc m hnh thc t trn c tnh d s dng, v chng
khng c mi lin h trc tip vi nim mu trc gic ca con ngi. Mu m con ngi cm
nhn:Hue (sc mu), Saturation ( bo ho), Lightness ( sng).
Cc m hnh mu khc nhau c pht trin nhm s dng cho mt tiu ch nht nh.
108
Chng 6: Mu sc trong ha
X X r
Y = Y
r
Z Z r
Xg
Yg
Zg
X b R
Yb G
Z b B
3.2. M hnh mu CMY (Cyan, Magenta, Yellow - xanh tm, ti, vng)
y l m hnh mu b (Subtractive color models) hin th nh sng v mu sc phn x t
mc in. B xung thm mc ng ngha vi nh sng phn x cng t.
Khi b mt khng ph mc th nh sng phn x l nh sng trng - white.
Khi 3 mu c cng gi tr cho ra mu xm. Khi cc gi tr t max cho mu en.
Color = cC + mM + yY
Ta c Red +Cyan = Black ; Green +Magenta = Black ; Blue + Yellow = Black
1
Black = 1
1
C 1 R
M = 1 G
Y 1 B
109
Chng 6: Mu sc trong ha
0.114 R
Y 0.299 0.587
I = 0.596 0.275 0.321 = G
Q 0.212 0.523 0.311 B
Y chi, I & Q i lng v mu sc
Ch : Y ging nh Y trong m hnh CIEs
N hon ton tng thch vi en/trng (B/W) ca TV
Nhng i lng trong ma trn bin i c tm bng cch s dng cc phosphor NTSC RGB
chun c cc to sc ph l R(0.67 0.33), G (0.21 0.71) v B(0.14 0.08). Ngi ta cng gi
nh rng im trng nm xw =0.31 , yw = 0.316 v Yw =1.0.
110
Chng 6: Mu sc trong ha
- Saturation - bo ho: ch ra mc thun ca mt mu hay khong cch ca mu
ti im c cng cn bng(mu xm)
- Lightness - sng: hin thn v m t cng sng t nh sng phn x nhn c
t i tng.
- Brightness - pht sng: cng nh sng m t i tng pht ra ch khng phi
do phn x t cc ngun sng khc.
M hnh mu RGB, CMY, YIQ c nh hng cho phn cng
HSV (Hue, Saturation, Value)=HSB(Hue, Saturation, Brightness) nh hng ngi s
dng da trn c s v trc gic v tng mu, sc v sc thi m thut
M hnh mu HSV c Alvey Ray Smith a ra 1978. Hue: mu sc 00-3600 o bi gc
quay xung quanh trc ng vi mu l 00, mu lc l 1200, mu lam l 2400. Cc mu b sung
cho hnh chp 1800 i din vi mu khc.
Value-Brightness:( sng) 0-1 ng cao V vi nh l cc im gc to (0,0). im
nh l mu en v gi tr V=0, ti cc im ny gi tr ca H v S khng lin quan n nhau. Khi
im c S=0 v V=1 l im mu trng, nhng gi tr trung gian ca V i vi S=0 (trn ng
thng qua tm) l cc mu xm. Khi S=0 gi tr ca H ph thuc c gi bi cc qui c khng
xc nh. Ngc li khi S khc 0 gi tr H s l ph thuc.
Saturation: bo ho 0-1, gi tr ca S l tp cc gi tr t 0 trn ng trc tm (trc V)
n 1 trn cc mt bn ti nh ca chp 6 cnh.
Saturat
111
Chng 6: Mu sc trong ha
Nhc im ca RGB:
- Kt qu thc nghim cho thy rt nhiu nhng nh sng mu khng th to thnh t 3
thnh phn mu c s vi nguyn nhn do v ca vng mc - retinal cortex.
- Vi mu Cyan: cng ca nh sng 2 mu green v blue kch thch cm nhn mu
trong mt ngn khng cho thu c mu chnh xc
- Cch duy nht thu c mu ny l loi bt phn mu bng cch thm nh sng
vo mu ban u.
- Bng cch thm t t nh sng vo thu c (test + red) s cho ra mu ng bng
(blue + green)
- C + rR = gG + bB <=> C = gG + bB - rR
- Vn t ra l vic phc tp trong phn tch mu v chuyn i mu vi i lng
m ca nh sng c lp thit b.
112
Chng 6: Mu sc trong ha
113
Chng 6: Mu sc trong ha
114
Chng 6: Mu sc trong ha
- Thang o ca Y xut pht t im trng trn ng thng vung gc vi mt phng
x,y vi gi tr t 0 ti 100.
- Khong mu ln nht khi Y=0 ti im trng v bng CIE Illuminant C. y l y
ca hnh.
- Khi Y tng mu tr nn sng hn v khong mu hay gam mu gim din tch trn ta
x,y cng gim theo.
- Ti im trn khng gian vi Y= 100 mu c sc xm bc v khong mu y l b
nht.
4. CHUYN I GIA CC H MU
Vic xy dng v th hin mu sc ca cc i tng trn mn hnh ho ch thc hin
qua m hnh ba mu m phn cng h tr RGB. Vy khi phn mm ng dng c s dng n cc
m hnh mu khc, ta phi chuyn i gia chng.
115
Chng 6: Mu sc trong ha
M = V*(1 - S);
N = V*(l - S*F);
K = V*(1- S*(1- F));
if I == 0 then (R,G,B) = (V,K,M);
if I == 1 then (R, G, B) = (N, V, M);
if I == 2 then (R, G, B) = (M, V, K);
if I == 3 then (R, G, B) = (M, N, V);
if I == 4 then (R, G, B) = (K, M, V);
if I == 5 then (R, G, B) = (V, M, N);
X a11
Y = a
21
Z a31
a12
a 22
a32
a13 R
a 23 G
a33 B
X X r
Y = Y
r
Z Z r
Xg
Yg
Zg
X b R
Yb G
Z b B
C R=1
R 1
G = 0 suy ra
B 0
X X r
Y = Y
r
Z Z r
Tng t B=1
Tng t G=1
R 0
G = 1 suy ra
B 0
X X g
Y = Y
g
Z Z g
R 0
G = 0 suy ra
B 1
X Xb
Y = Y
b
Z Z b
Thng [X Y Z] cho mi pht pho (phosphor) th khng c cung cp, nn chng ta tnh
vi trng hp im trng (whitepoint) khi R=G=B=1.
By gi chng ta cn bit chi ca im trng c gi bi Yw . Ta t:
Er = Xr + Yr + Zrsuy ra xr = Xr / Er vy Xr = xr .Er ; Yr = yr.Er ; Zr = (1- xr yr ).Er
Tng t:
116
Chng 6: Mu sc trong ha
xr E r
X
Y =
y r Er
Z (1 xr yr ) Er
xg Eg
yg Eg
(1 xg y g ) E g
R
yb Eb
G
(1 xb yb ) Eb B
xb Eb
Ta c im trng:
X w
1
Y = [M ]1
w
Z w
1
M ta c theo NTSC: RGB chun (xw, yw, Yw) nh sau: xw = 0.31, yw = 0.316 v Yw =1.0
C:
yw =
xw =
V:
Y
Yw
( X w + Yw + Z w ) = w
yw
X w + Yw + Z w
Xw
Yw
Xw = xw (Xw + Yw + Zw ) X w = x w
X w + Yw + Z w
yw
Z w = (1 x w y w )
Yw
yw
Ta c R + G + B = W nn:
X r X g Xb X w
Y + Y + Y = Y
r g b w suy ra Xw =Xr + Xg + Xb = xrEr + xrEg + xbEb
Z r Z g Z b Z w
T :
Er
xr
xg
xb
X w
Y =
yr
yg
yb
Eg
w
Z w (1 xr y r ) (1 x g y g ) (1 xb yb ) Eb
Ta hon ton tnh c: Er, Eg v Eb
Tm tt:
Chng ny chng ta nghin cu cu to ca nh sng (v mt vt l), ri xt b phn cm
nhn nh sng ca con ngi l mt. a ra cc h mu nh hng cho phn cng nh: RGB
dng cho my tnh, CMYK dng cho my in v YIQ dng cho truyn hnh. Tt c cc h mu ny
con ngi u khng cm nhn c, con ngi ch cm nhn c h mu HSV hay HLS. T tt
c cc u nhc im ca cc h mu trn, t s cm nhn mu sc ca con ngi ph thuc vo
cu to ca cc t bo mt nn nm 1913 t chc quc t v nh sng a ra h mu chun
thun nht CIE. H mu ny c th bao hm tt c cc h mu trn, n gii quyt c cc nhc
im ca h mu RGB. Cui cng chng ta a ra cc cng thc chuyn i gia cc h mu
vi nhau.
117
Chng 6: Mu sc trong ha
Bi tp:
1. Gi s rng mi trng trng tm l khng kh (hoc chn khng) hy m t di quang
ph hin th bng mt di tn s.
2. Ti sao mi th trng c v mu xm hoc en trong mt phng ti ni chng ta hu nh
khng th nhn thy c?
3. Hy thit lp mt cng thc n gin tnh din tch b gii hn bi hm phn b P().
(Xem hnh 6.9 sch K thut ho)
4. T hm phn b P() hy lp cng thc tnh bo ho t hnh 6.9 - sch k thut ho.
5. S khc nhau gia Y trong CMY v Y trong YIQ l g?
6. Gi s rng mt mn hnh hin th to nn nhng g c gi l mu trng chun vi xw =
0.313 yw =0.329 v Yw = 1.0 (R=G=B=1). V cc to sc ph ca pht pho ging nh
to c tm thy m hnh mu.
R(0.62 0.34)G(0.290.59)B(0.150.06)
Hy tm ma trn bin i mu M cho mn hnh hin th.
7. Hy kim nghim rng Y trong m hnh CIE XYZ tng t Y trong m hnh mu NTSC
YIQ. Ta c NTSC chun th: xw =0.31 , yw = 0.316 v Yw =1.0 v s dng cc to sc
ph ca cc pht pho NTSC chun: R(0.67 0.33), G (0.21 0.71) v B(0.14 0.08).
Bi tp trc nghim:
1. Mn hnh CRT th gi tr gama l:
a. 1.5
b. T 2.3 n 2.6
c. 3.3 n 4
d. 1.01
2. Ngi b m mu (ch thy sng v ti) l ngi:
a. Mt b mt t bo que
b. Mt b mt t bo nn
c. Mt b mt c t bo nn v que
d. Mt c t l ba t bo nn khng bnh thng
3. Con ngi nhy cm vi mu:
a. Lc
b. Lam
c. Vng
d.
4. Trong nh en trng, ta biu din mt im nh trn mn hnh theo cc mu t. Nu ma
trn li ca mu t kch thc 4x4, th chng ta c c thy s mu t l:
a. 15
b. 16
c. 17
118
Chng 6: Mu sc trong ha
d. 18
5. H mu m con ngi cm nhn l:
a. Hue (sc mu), Saturation ( bo ho) v Lightness ( sng)
b. RGB (Red - , Green - lc, Blue - lam)
c. CMY (Cyan - xanh tm, Mangenta - ti v Yellow - vng)
d. CIE
6. Ta c ba mu nc (Red), lc (Green) v lam (Blue) em trn cc mu bo ho v cn
bng th thu c mu:
a. Trng
b. en
c.
d. C ba u sai
7. My in mu thng gm s hp mc mu:
a. 2 hp
b. 3 hp
c. 4 hp
d. Cng nhiu hp th in cng c nhiu mu
119
x0
x1
x2
x3
Mi 1 im cho ta cp 3 gi tr: P0 = y 0 P1 = y1 P2 = y 2 P3 = y3
z 0
z1
z 2
z 3
C thy c 12 phng trnh, thay vo 3 phng trnh trn ta tnh c 12 n a1.....d3
Ghi ch: r rng c s thay i mt cht v ng cong th ta li phi gii li h phng
trnh tnh cc tham s cho ng cong, dn n tnh ton chm.
p0(u=0)=k1
p1(u=1)=k0+k1+k2+k3
p1(u=1)= k1+2k2+3k3
hay
k0=p0 v k1=p0
k2=3(p1 p0) - 2p0 p1 v k3 = 2(p0-p1) + p0 + p1
Khi c ko, k1, k2, k3 thay vo:
p = p(u) = k0 + k1u + k2u2 + k3u3
p0(1-3u2+2u3) + p1(3u2-2u3) + p0(u-2u2+u3) + p1(-u2+u3)
1
0
p = p(u) = [ 1 u u2
3
0 0
0 p0
0 1
0 p1
.
3 2 1 p '0
2 1
1 p '1
p = p(u) = [ 1 u u2 u3 ]
0
0
1
3 3
0
3 6 3
1 3 3
0
0
0
1
p0
p
1
p2
p3
P (u ) = Bi ,n (u ) Pi
i =0
Bi ,n (u ) = C (n, i )u i (1 u ) n i
C (n, i ) =
n!
i!(n i )!
123
0 0
0 p0
0 1
0 p1
.
3 2 1 p '0
2 1
1 p '1
Pn-1
Pn-1
Po
z
P1
P0'
1 0 . . . . P0'
1 4 1 0 . . '
P1 3( P2 P0 )
0 1 4 1 0 . .
.
=
.
. . . . . . .
. . 0 1 4 1 Pn'2 3( Pn1 Pn3 )
Pn'1
. . . . 0 1 Pn'1
Tng ng vi:
P0' 1 0 . . . .
'
P1 1 4 1 0 . .
. 0 1 4 1 0 .
=
. . . . . . .
P ' . . 0 1 4 1
n'2
Pn 1 . . . . 0 1
P0'
3( P2 P0 )
.
.
3( P P )
n 1 ' n3
Pn 1
1.5.2. ng B-spline
Vi Bezier hay spline u khng cho ta thay i ng cong mt cch cc b, vic thay i
v tr cc im kim sot hay cc vector tip tuyn khng ch nh hng trc tip n dc ca
ng cong ln cn quanh im kim sot m cn ko theo nh hng n cc phn cn li ca
ng cong. ng Bezier thm vo l khi tnh xp x bc cao s rt phc tp cn khi lin
kt nhiu on Bazier hay Hermite bc thp (bc ba) c th em li ch li khi tnh ton nhng
yu t rng buc v tnh lin tc ca o hm bc cao ti cc im ni khng cho iu khin cc
b nh mong mun.
Vic kt hp lun phin cc on cong tng hp, thng qua cc a thc tham s xc nh
ring r trn mt s im kim sot ln cn vi s bc tu khng ph thuc vo s lng cc
im kim sot, cho php to nn ng cong trn mm B-spline. ng cong ny khc phc
c cc nhc im m cc dng ng cong trc cha t c. C ngha l khi dch chuyn
im kim sot ca ng cong th ch mt vi phn on ln cn ca im kim sot b nh
hng ch khng phi ton b ng cong.
Vi n+ 1 s im kim sot Pi ta c:
n
P (u ) = N i ,k (u ).Pi
i =0
N i ,k (u ) =
(u U i +1 k )
(U i +1 u )
N i 1,k 1 (u ) +
N i ,k 1 (u )
(U i U i +1 k )
(U i +1 U i + 2 k )
1 u [ui , ui +1 ]
N i ,1 (u ) =
0 others
Trong ui l gi tr ti nt pi vi bin s l u c gi l cc vector nt.
Tt c cc gi tr nt ng thi xc nh trn vector nt v cc nt nguyn thng s dng
d dng. Trong trng hp ny cc hm hp bc k s khc 0 trong khong k ca vector nt v
ton b cc gi tr trn vector cho mt tp hp im bng n+1+k.
Khng nh Bezier, ng B-spline khng i qua hai im u v cui tr khi hm hp
c dng l tuyn tnh.
ng B-spline c th c to qua hai im u, cui v tip xc vi vector u v cui
ca a gic kim sot. Bng cch thm vo cc nt ti v tr ca cc nt cui ca vector tuy nhin
cc gi tr ging nhau khng nhiu hn bc ca ng cong.
Ging nh ng cong Bezier, tnh cht bao li ca a gic kim sot v tnh cht chun
c tha mn. Vy c:
n
N
i =0
i,k
(u) = 1
127
Cp (k)
Vector nt (m=n+k)
[0 1 2 3 4 5 6 7]
1t6
[0 1 2 3 4 5 6 7 8]
2t6
[0 1 2 3 4 5 6 7 8 9]
3t6
s lng nt (m = n + k)
[0 0 1 2 3 3]
[0 0 0 1 2 2 2]
[0 0 0 0 1 1 1 1]
1=<i<=k
k+1<i<=n+1
ui = n-k+2 n+1<i<=n+k+1
Cc vector nt khng tun hon cung cp cc hm c s c nh ngha trong mt min
tham s phc tp v khng c s mt mt nh vi loi vector tun hon v v vy ng cong Bspline loi ny lun i qua cc im u v cui ca a gic kim sot.
V d: hm hp bc ba tnh xp x cho 8 khong s xc nh trn vector nt l
00001234555. y chng ta cn thy s thay i cc b trn ng cong khi ta thay i v tr
mi im.
ng cong Bezier l trng hp c bit ca B-spline khng tun hon, trong s lng
cc nh s dng bng vi cp ca ng cong. Vector nt trong trng hp ny l:
[ 0 0 ..... 0 1 1 ...... 1 1 ]
kk
ng cong B-spline bc ba vi bn im kim sot v vector khng tun hon [0 0 0 0 1 1
1 1] cng chnh l ng cong Bezier.
c. Khng u
Trong vector nt khng tun hon, gi tr cc nt xut hin ti cc bin c lp li v cc
nt bn trong cc bc nt bng nhau. Nu mt trong hai iu kin ny hoc c hai iu kin ny
khng c tho mn th vector nt l khng u.
V d cc nt khng u c th to ra bng cch t cc gi tr lp li i vi cc nt
khong gia [0 1 2 3 3 4 5]
Hay to ra bc nhy khng bng nhau gia cc nt [0.0 0.2 0.5 0.75 1.0]
Cc vector nt loi u cho php ngi s dng d hnh dung v x l trong cc php ton
nhng trong mt s cc trng hp bc nt khng u li c nhng u im c bit. V d nh
trong vic iu khin hnh dng ca ng cong trong tin trnh thit k khi cc sai lch khng
129
u,v,w [0, 1]
y=y(u,v,w)
u+v+w=1
z=z(u,v,w)
Q(u,v,w) = Q[ x=x(u,v,w) y=y(u,v,w) z=z(u,v,w) ]
Biu din theo mnh
Biu din ming t gic - quadrilatera Patches
Biu din ming tam gic - Triangular Patches
u,v [ 0, 1]
z=z(u,v)
Q(u,v) = Q[ x=x(u,v) y=y(u,v) z=z(u,v) ]
Thnh phn
u,v l cc tham bin
130
Surface
3
2.
2
1.
Duong
1
0.
cong
Duong
0.
cong
0.
0.
1 1
0.
0.
0.
0.
P (v )
Q(u , v) = P1 (v)(1 u ) + P2 (v)u = [(1 u )] 1
P2 (v)
0 2
V d: Mt trn xoay
P1[1 1 0] v P2[6 2 0] nm trong mt phng xoy. Quay ng thng quanh trc ox s
c mt mt nn. Xc nh im ca mt ti t=0.5, f =p/3.
Phng trnh tham s cho on thng t P1 ti P2 l:
P(t) = [ x(t) y(t) z(t) ] = P1 + (P1 - P2)t 0 t 1
Vi cc thnh phn -cc:
x(t) = x1 + (x2- x1)t = 1+5t
y(t) = y1 + (y2- y1)t = 1+t
z(t) = z1 + (z2- z1)t = 0
Dng phng trnh:
Q(1/2, p/3) = [ 1+5t(1+t)cosf (1+t)sinf ]
7
=
2
cos
2
3
7
=
2
3
4
sin
2
3
3 3
4
133
v )
0
cos(
2
v
)
sin(
2
T (v) =
0 sin( 2v ) cos(2v )
0
0
10v
0
0
0.5
0.5
-0.5
-0.5
-1
1
-1
1
10
10
-1
4
-2
-1
6
2
6
4
-2
-3
2
0
1
1
1
1
0
1
0
1
T (v ) =
0
0
10v cos( v ) 1
0 0
0 0
1 0
0 1
cos( )
sin( )
0
0
cos( v ) 1
10v
0 0
0 0
1 0
0 1
2.4. Mt t cc ng cong
2.4.1. Mt cong bc ba Hermite
Mt cong tham bin c to bi b mt qua ti 4 im d liu ti 4 gc v cc ng cong
c phng trnh bc ba qua chng, nh vy 16 vector iu kin hay tng ng vi 48 gi tr i
s cn thit xc nh cc h s phng trnh.
Khi nhng h s l 4 im d liu gc v 8 vector tip tuyn ti cc im theo cc hng
u,v tng ng cng 4 vector xon th mt cong to thnh l mt cong Hermite. Phng trnh c
dng:
3
Q(u , v ) = Cij u i v j
0 u, v 1
i =0 j =0
C 00
C
[C ] = 10
C 20
C 30
C 01
C11
C 02
C12
C 21
C 22
C 31
C 32
C 03
C13
C 23
C 33
[M H ] =
0
0
1
0
0
0
0
1
V
V B l ma trn iu kin bin:
P00
[B] = PP10
u 00
Pu10
P01 Pv 00
P11 Pv10
Pu 01 Puv 00
Pu11 Puv10
Pv 01
Pv11
Puv 01
Puv11
Hay vi dng thc rt gn ca ma trn [B] theo cc ma trn iu kin bin tng ng:
[B] ma trn cc gi t tham s
[Pu], [Pv] cc vector tip tuyn theo u,v tng ng.
[Puv] ma trn xon trn u,v
136
[M H ]U & [M H ]V
0
0
0
0
6 6 3
3
=
6 6 4 2
0
1
0
0
{P
i, j
: 0 i n,0 j m}
Q(u , v ) = [U ] [N ] [B ] [M ] [V ]
T
138
[V ] = [v 3
[U ] = [u 3
]
1]
v2
v 1
u2
1 3 3
3 6 3
[N] v [M] c biu din =
3 3
0
0
0
1
1
0
0
Q(u, v ) = u 3
u2
1 3 3
3 6 3
u 1
3 3
0
0
0
1
1 B00
0 B10
0 B20
0 B30
B01
B02
B11
B21
B12
B22
B31
B32
B03 1 3 3 1 v 3
B13 0 3 6 3 v 2
B23 0 0
3 3 v
B33 0 0
0
1 1
Q (u, w) = N i ,k (u ). M j ,h ( w). Pi , j
i =1 j =1
1 xi u < xi +1
N i ,k (u ) =
0 otherwise
Ni, k (u ) =
(u xi ) N i , k 1 (u )
xi + k 1 xi
( xi + k u ).N i +1,k 1 (u )
xi + k xi +1
xi = 0(1 i k )
xi = i k (k + 1 i n)
x = n k + 1(n + 1 i n + k )
i
Pij l im kim sot
N v M l a thc B-spline
Vi cc mt cong m mt cong ph thuc vo cc nt vector
c im ca mt cong B-Spline
S bc caonht ca b mt theo mi hng th bng s im kim sot -1 theo hng .
o hm ring ca phng trnh b mt theo mi tham bin c bc bng s im kim
sot theo tham bin tr 2.
B mt B-spline th khng chu nh hng ca php bin i anfine. B mt s thay i
nu ta thay i a gic kim sot.
nh hng ca mt im kim sot n c gii hn bi + - k/2 h/2 khong i vi mi
tham s.
Nu s nh ca a gic kim sot bng s bc theo mi tham bin v khng c im kp
no th mt B-spline s chuyn thnh mt Bezier.
Nu cc a gic kim sot c dng tam gic th li a gic kim sot s c hnh dng gn
ging vi b mt cong.
Mi mt B-Spline lun nm trong bao li ca a gic kim sot .
Mi mt B-Spline c dng iu lun bm theo hnh dng ca a gic kim sot.
Tm tt:
Vic to ra cc ng cong theo mun cng l vn thng gp khi lm vic vi ho
my tnh. Chng ta kho st cch tip cn v ng cong bng Hermite, Bezier v B-spline. Cc
cch tip cn ny da trn c s v ng cong bng mt tp im m t hnh dng ca ng
cong gi l tp im kim sot. Khi thay i tp im ny, hnh dng ca ng cong s thay i
theo. Cch tip cn ny cho thy s thun li v linh hot khi cn phi v cc ng cong phc
tp v do n c dng nhiu trong thit k.
Mt nhc im trong cch v ng cong bng Bezier l khi mt phn ca ng cong
t yu cu, nhng khi hiu chnh phn cn li s mt i phn t yu cu, hay vic ni trn
140
Bi tp:
1.
2.
3.
4.
5.
6.
7.
8.
9.
141
Ph lc 1
PH LC 1
1. Yu cu
Phi c tp tin iu khin mn hnh EGAVGA.BGI (thng thng tp ny thng nm
trong th mc \BC\BGI hay TC\BGI khi ci t).
Nu chng ta c s dng ti font ch th cn phi c thm cc file (*.CHR) nh:
GOTH.CHR (ch Gothic), LITT.CHR (ch Small Font), SANS.CHR (ch Sans Serif),
TRIP.CHR (ch cao gp 3).
dng c th vin cc hm ho cn c dng lnh:
#include <graphics.h> v t mc chn Graphics library l ON ([x] trong menu
Options/Linker/Libraries.
Khi cn tham kho c php, cch s dng ca bt k mt hm ho no, a con tr v
tn hm trong chng trnh sau nhn t hp phm CTRL+F1. Mun tham kho danh sch ton
b cc hm ca th vin ho nhn t hp phm CTRL+F1 ngay ti dng ch <graphics.h>.
2. Khi to v ng ch ho
phn gii ca mn hnh c o bng s im theo chiu ngang nhn vi s im theo
chiu dc ca mn hnh ho. To gc ca mn hnh ho (0,0) l im nm ti gc trn
cng pha bn tri. Mi kiu ho dng mt h to ring. H to cho mn hnh VGA l
640x480.
Khi ng ho vi mn hnh ngm nh:
#include <graphics.h>
void main(void){
int
142
Ph lc 1
#define RADS 0.017453293
void giaodiem(double x1, double y1, double x2, double y2,
double a1, double b1, double a2, double b2) {
double dx, dy, da, db, x, y, t, tich;
dx = x2 - x1;
dy = y2 - y1;
da = a2 - a1;
db = b2 - b1;
tich = db * dx - da * dy;
if (tich != 0) {
t = ((a1 - x1) * dy - (b1 - y1) * dx) / tich;
if (t>=0.0 && t<=1.0) {
x = t * (a2 - a1) + a1;
y = t * (b2 - b1) + b1;
line(x1, y1, x2, y2);
line(a1, b1, a2, b2);
setfillstyle(SOLID_FILL, RED);
fillellipse(x, y, 3, 3);
}
}
}
void main() {
int gr_drive = DETECT, gr_mode;
double x1, y1, x2, y2, a1, b1, a2, b2;
printf("\nNhap vao toa do doan thang thu nhat: ");
scanf("%lf%lf%lf%lf", &x1, &y1, &x2, &y2);
printf("\nNhap vao toa do doan thang thu hai: ");
scanf("%lf%lf%lf%lf", &a1, &b1, &a2, &b2);
initgraph(&gr_drive, &gr_mode, "");
giaodiem(x1, y1, x2, y2, a1, b1, a2, b2);
getch();
closegraph(); //ng ch ho
}
3. Cc hm c bn
3.1. Bng mu ca mn hnh ho.
Setbkcolor(int color)
setcolor(int color)
t mu v cho nt v hin ti
getmaxcolor()
Ph lc 1
outextxy(int x, int y, char * msg) Ch th a xu k t msg ra mn hnh ho ti v tr (x,y)
3.2. Nguyn s im
Nguyn s n gin nht chnh l im, mi nguyn s khc u c xy dng nn t
im.
int getmaxx()
int getmaxy()
putpixel( x, y, color)
getpixel(x,y)
3.3. Nguyn s ng
Cc hm cho ng:
moveto(int x, int y)
getx(), gety()
lineto(int x, int y)
line(int x1, int y1, int x2, V mt ng thng t to (x1,y1) n to (x2, y2) trn mn hnh
int y2)
ho. ng thng mi c v khng ph thuc vo v tr hin thi ca
con tr mn hnh
linerel(int dx, int dy)
144
Ph lc 1
pieslice(int x, int y, int gd, int gc, int r) v v t mu hnh qut c (x,y) l to tm qut,
gd l gc u, gc l gc cui, r l bn knh.
Tn hng mu
M t
EMPTY_FILL
T bng mu nn
SOLID_FILL
T bng nt lin
LINE_FILL
T ------
LTSLASH_FILL
T ////
SLASH_FILL
T ///// in m
BKSLASH_FILL
T \\\\\ in m
LTBKSLASH_FILL
T \\\\
HATCH_FILL
XHATCH_FILL
INTERLEAVE_FILL
T ng t qung
WIDE_DOT_FILL
10
CLOSE_DOT_FILL
11
T bng du chm dy
3.7. Nguyn s vn bn
outtext( char far *textstring) s hin th ni dung xu textstring ti v tr hin thi ca mn
hnh ho.
outtextxy(int x, int y, char far *textstring) hin th ni dung xu textstring ti to (x, y)
trong mn hnh ho.
settextstyle(int font, int direction, int charzise) dng xc lp kiu ch vi cc font ch
khc nhau.
Trong int font c xc lp thng qua cc hng sau:
TN FONT
Gi tr
ngha
DEFAULT_FONT
TRIPLEX_FONT
Ph lc 1
SMALL_FONT
SANS_SERIF_FONT
GOTHIC_FONT
3.8. Ca s (viewport)
viewport l 1 vng hnh ch nht trn mn hnh ho ging nh window trong textmode.
setviewport(int x1, int y1, int x2, int y2, int clip) trong (x1,y1,x2,y2) l gc tri trn v
gc phi di tho mn iu kin nh sau:
0<=x1 <= x2 v 0<= y1 <= y2
Tham s clip: clip=1 khng cho php v ra ngoi viewport
clip=0 cho php v ra ngoi viewport
getviewsettings(struct viewporttype *vp) nhn viewport hin hnh,
struct viewporttype {
int left,top,right,bottom;
int clip;
};
clearviewport(void) xo viewport
cleardevice(void) xo mi th trn mn hnh v a con tr v to (0,0) ca mn hnh
Ch : nh s dng viewport ta c th vit cc chng trnh ho c trc to , bng
cch thit lp viewport vi clip=0 (cho php v ra ngoi gii hn)
Ph lc 1
lu hnh mu trn mn hnh ho li bng ch th getimage(int x1, int y1, int x2, int y2, void
far *bitmap); trong bitmap l min nh dng lu hnh nh ca hnh ch nht c to
(x1,y1) v (x2, y2) trn mn hnh ho.
Ch th getimagesize(int x1, int y1, int x2, int y2) dng xc nh kch thc b nh dng
ct hnh nh gii hn trong hnh ch nht c to (x1, y1), (x2,y2).
Ch th putimage(int x, int y, void far * bitmap, int copymode) dng khi phc li hnh
nh c ct gi bng getimage(). Ch th putimage() kt hp vi ch th lm tr (delay() ) sao
cho s cc hnh nh hin th trn mn hnh ho khong 24 hnh/giy chng ta s nhn c mt
hnh nh chuyn ng.
V d 1: To hnh nh chuyn ng l mt mi tn.
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#define ARROW_SIZE 10
void draw_arrow(int x, int y);
int main(void) {
/* request autodetection */
int gdriver = DETECT, gmode, errorcode;
void *arrow;
int x, y, maxx;
unsigned int size;
/* initialize graphics and local variables */
initgraph(&gdriver, &gmode, "\\TC\\BGI");
/* read result of initialization */
errorcode = graphresult();
if (errorcode != grOk) { /* an error occurred */
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1); /* terminate with an error code */
}
maxx = getmaxx(); x = 0;
y = getmaxy() / 2;
/* draw the image to be grabbed */
draw_arrow(x, y);
/* calculate the size of the image */
size = imagesize(x, y-ARROW_SIZE, x+(4*ARROW_SIZE), y+ARROW_SIZE);
/* allocate memory to hold the image */
arrow = malloc(size);
/* grab the image */
getimage(x, y-ARROW_SIZE, x+(4*ARROW_SIZE), y+ARROW_SIZE, arrow);
/* repeat until a key is pressed */
147
Ph lc 1
while (!kbhit()){
/* erase old image */
putimage(x, y-ARROW_SIZE, arrow, XOR_PUT);
x += ARROW_SIZE;
if (x >= maxx)
x = 0;
/* plot new image */
putimage(x, y-ARROW_SIZE, arrow, XOR_PUT);
}
/* clean up */
free(arrow);
closegraph();
return 0;
}
void draw_arrow(int x, int y) {
/* draw an arrow on the screen */
moveto(x, y);
linerel(4*ARROW_SIZE, 0);
linerel(-2*ARROW_SIZE, -1*ARROW_SIZE);
linerel(0, 2*ARROW_SIZE);
linerel(2*ARROW_SIZE, -1*ARROW_SIZE);
}
148
Ph lc 1
if(x1 == x2)
{
int i;
if(y1 < y2)
for(i = y1; i <= y2;i ++)
{
putpixel(x1,i,c);
delay(10);
}
else
for(i = y2; i<= y1; i ++)
{
putpixel(x1,i,c);
delay(10);
}
}
if(y1 == y2)
{
int i;
if(x1 < x2)
for(i = x1; i <= x2; i ++)
{
putpixel(i,y1,c);delay(10);
}
else
for(i = x2; i <= x1; i ++)
{
putpixel(i,y1,c);
delay(10);
}
}
if(x1 < x2)
{
if(y1 < y2)
{
if((y2 - y1)/(x2-x1) < 1)
{
int i;
int Dx = x2 - x1;
int Dy = y2 - y1;
int p = 2*Dy - Dx;
putpixel(x1,y1,c);
for(i = x1; i < x2; i ++)
{
if(p < 0)
p += 2*Dy;
else
{
p += 2*(Dy - Dx);
y1 ++;
}
x1 ++;
putpixel(x1,y1,c);
delay(10);
149
Ph lc 1
}
}
else
{
int i;
int Dx = x2 - x1;
int Dy = y2 - y1;
int p = 2*Dx - Dy;
putpixel(x1,y1,c);
for(i = y1; i < y2; i ++)
{
if(p < 0)
p += 2*Dx;
else
{
p += 2*(Dx - Dy);
x1 ++;
}
y1 ++;
putpixel(x1,y1,c);
delay(10);
}
}
}
if(y1 > y2)
{ if((y2 - y1)/(x2 - x1)> -1 )
{
int i;
int Dx = x2 - x1;
int Dy = y2 - y1;
int p = 2*Dy + Dx;
putpixel(x1,y1,c);
for(i = x1; i <= x2; i ++)
{
if(p > 0)
p += 2*Dy;
else
{
p += 2*(Dy + Dx);
y1-- ;
}
x1 ++;
putpixel(x1,y1,c);
delay(10);
}
}
else
{
int i;
int Dx = x2 - x1;
int Dy = y2 - y1;
int p = 2*Dx + Dy;
150
Ph lc 1
putpixel(x1,y1,c);
for(i = y1; i >= y2; i --)
{
if(p < 0)
p += 2*Dx;
else
{
p += 2*(Dx + Dy);
x1++ ;
}
y1 --;
putpixel(x1,y1,c);
delay(10);
}
}
}
}
if(x1 > x2)
{
if(y1 < y2)
{
151
Ph lc 1
else
{
p -= 2*(Dx + Dy);
x1 --;
}
y1 ++;
putpixel(x1,y1,c); delay(10);
}
}
}
if(y1 > y2)
{
if((y2-y1)/(x2-x1) < 1)
{
int i;
int Dx = x2 - x1;
int Dy = y2 - y1;
int p = 2*Dy - Dx;
putpixel(x1,y1,c);
for(i = x1; i > x2; i --)
{
if(p > 0)
{
p =p - 2*Dy +2*Dx ;
y1--;
}
else
p -= 2*Dy;
x1 --;
putpixel(x1,y1,c);
delay(10);
}
}
else
{
int i;
int Dx = x1 - x2;
int Dy = y1 - y2;
int p = 2*Dx + Dy;
putpixel(x1,y1,c);
for(i = y1; i > y2; i --)
{
if(p < 0)
{
p =p - 2*Dx + 2*Dy ;
x1 --;
}
else
152
Ph lc 1
p =p - 2*Dx ;
y1 --;
putpixel(x1,y1,c);
delay(10);
}
}
}
}
}
void Dothi()
{
Bresenham_Line(getmaxx()/2,getmaxy()/2,getmaxx()-10,getmaxy()/2,15);
Bresenham_Line(getmaxx()/2,10,getmaxx()/2,getmaxy()/2,15);
Bresenham_Line(getmaxx()/2,getmaxy()/2,getmaxx()/2-170,getmaxy()/2+170,15);
Bresenham_Line(getmaxx()/2-170,getmaxy()/2+170,getmaxx()/2-170,getmaxy()/2+166,15);
Bresenham_Line(getmaxx()/2-170,getmaxy()/2+170,getmaxx()/2-163,getmaxy()/2+167,15);
settextjustify(CENTER_TEXT,CENTER_TEXT);
outtextxy(getmaxx()-9,getmaxy()/2+1,"
");
outtextxy(getmaxx()-9,getmaxy()/2+10,"y");
outtextxy(getmaxx()/2,10,"-");
outtextxy(getmaxx()/2 - 10,10,"z");
outtextxy(getmaxx()/2-155,getmaxy()/2+170,"x");
}
point Diem3d(int x , int y , int z)
{
point p;
if(x>=0&&y>=0&&z>=0)
{
p.x = int(getmaxx()/2+y - x*cos(RADS*45));
p.y = int(getmaxy()/2-z + x*cos(RADS*45));
}
if(y>=0&&x<0&&z>=0)
{
p.x = int(y+getmaxx()/2-x*cos(RADS*45));
p.y = int(getmaxy()/2-z+x*cos(RADS*45));
}
if(x>=0&&y<0&&z>=0)
{
p.x = int(getmaxx()/2+y-x*cos(RADS*45));
p.y = int(getmaxy()/2-(z-x*cos(RADS*45)));
}
if(x>=0&&y>=0&&z<0)
{
p.x = int(getmaxx()/2+y-x*cos(RADS*45));
p.y = getmaxy()/2-z+x*cos(RADS*45);
}
if(y>=0&&x<0&&z<0)
{
p.x = int(getmaxx()/2+y-x*cos(RADS*45));
p.y = int(getmaxy()/2+(-z-x*cos(RADS*45)));
153
Ph lc 1
}
if(x>=0&&y<0&&z<0)
{
p.x = int(getmaxx()/2+y-x*cos(RADS*45));
p.y = int(getmaxy()/2-z+x*cos(RADS*45));
}
if(z>=0&&y<0&&x<0)
{
p.x = int(getmaxx()/2-(-y+x*cos(RADS*45)));
p.y = int(getmaxy()/2-(z-x*cos(RADS*45)));
}
if(x<0&&y<0&&z<0)
{
p.x = int(getmaxx()/2+y-x*cos(RADS*45));
p.y = int(getmaxy()/2-z+x*cos(RADS*45));
}
return(p);
}
point hinhchieu(int &x, int &y , int &z , int chieu)
{
point p;
if(chieu==1)
{
p.x =int( getmaxx()/2+y - x*cos(RADS*45));
p.y =int( getmaxy()/2 + x*cos(RADS*45));
}
if(chieu==2)
{
p.x =int ( getmaxx()/2+y-x*cos(RADS*45)-y);
p.y =int ( getmaxy()/2-z+x*cos(RADS*45));
}
if(chieu == 3)
{
p.x =int( getmaxx()/2+y-x*cos(RADS*45)+x*sin(RADS*45));
p.y =int( getmaxy()/2-z);
}
return(p);
}
point quay(int &x, int &y, int &z, int goc , int chieu)
{
point p;
if(chieu==1)
{
p.x = x*cos(RADS*goc) + z*sin(RADS*goc);
p.z = -x*sin(RADS*goc) + z * cos(RADS*goc);
p.y = y;
}
if(chieu==2)
{
p.y = y*cos(RADS*goc) - z*sin(RADS*goc);
154
Ph lc 1
p.z = y*sin(RADS*goc) + z * cos(RADS*goc);
p.x =x;
}
if(chieu==3)
{
p.x = x*cos(RADS*goc)-y*sin(RADS*goc);
p.y = x*sin(RADS*goc)+y*cos(RADS*goc);
p.z = z;
}
return p;
}
void chieumat(point k[],int t, int m )
{
int i,j=0;
int n[4][4];
for(i = 0 ; i<4 ; i++)
for(j = 0 ; j<4 ; j++)
{
n[i][j]=1;
n[j][i]=1;
}
for(i = 0 ; i< 4 ; i++)
{
k[i] = hinhchieu(k[i].x,k[i].y,k[i].z,t);
}
for( i = 0 ; i< 4 ; i++)
for( j = 0 ; j< 4 ; j++)
{
if(i!=j&&n[i][j]==1&&n[j][i]==1)
{
Bresenham_Line(k[i].x,k[i].y,k[j].x,k[j].y,m);
n[i][j]=0;
n[j][i]=0;
}
}
}
void main()
{
clrscr();
point b[4],c[4],l[4];
int j=0;
int goc[2]={45,35};
int driver = DETECT, mode;
initgraph(&driver,&mode,"c:\\tc\\bgi");
Dothi();
for(int i = 0; i < 4; i ++)
b[i] = Diem3d(a[i].x,a[i].y,a[i].z);
for( i = 1; i < 4; i ++ )
{
Bresenham_Line(b[j].x,b[j].y,b[i].x,b[i].y,10);
155
Ph lc 1
}
Bresenham_Line(b[1].x,b[1].y,b[2].x,b[2].y,10);
Bresenham_Line(b[1].x,b[1].y,b[3].x,b[3].y,10);
Bresenham_Line(b[2].x,b[2].y,b[3].x,b[3].y,10);
settextjustify(LEFT_TEXT,RIGHT_TEXT);
printf("\nQuay quanh truc : oy goc 45");
printf("\nQuay quanh truc : ox goc 35.5");
for( i = 0 ; i< 4 ; i++)
{
c[i] = quay(a[i].x , a[i].y , a[i].z , goc[1] ,1);
}
for(i = 0 ; i< 4 ; i++)
{
c[i] = quay(c[i].x,c[i].y,c[i].z,goc[2],2);
}
for(i = 0; i< 4; i ++)
l[i] = c[i];
for( i = 0; i < 4; i ++)
c[i] = Diem3d(c[i].x,c[i].y,c[i].z);
outtextxy(10,110,"Chon mat chieu: ");
outtextxy(10,120,"xoy: Bam so 1.");
outtextxy(10,130,"xoz: Bam so 2.");
outtextxy(10,140,"yoz: Bam so 3.");
outtextxy(10,150,"Bam so 4 de ket thuc");
char m;
do{
m = getch();
for(i = 0;i < 4; i ++)
c[i] = l[i];
switch (m)
{
case '1' :{
chieumat(c,1,5);
break;
}
case '2' :{
chieumat(c,2,7);
break;
}
case '3' :
{
chieumat(c,3,9) ;
break;
}
}
}while( m !='4');
closegraph();
}
Bi 2: xn ta
#include <conio.h>
156
Ph lc 1
#include <graphics.h>
#include <math.h>
#include <stdlib.h>
#define ROUND(a) ((double)(a+0.5)
#define TRUE 1
#define FALSE 0
int cliptest(double p, double q, double *u1, double *u2)
{
double r;
int retVal = TRUE;
if (p < 0.0)
{
r = q / p;
if (r > *u2)
retVal = FALSE;
else
if (r > *u1)
*u1 = r;
}
else
if ( p > 0.0)
{
r = q / p;
if (r < *u1)
retVal = FALSE;
else
if (r < *u2)
*u2 = r;
}
else
{
if (q < 0.0)
retVal = FALSE;
}
return (retVal);
}
void clipline(double x1, double y1, double x2, double y2,
double xmin, double ymin, double xmax, double ymax)
{
double u1 = 0.0, u2 = 1.0, dx, dy;
double oldx1, oldy1, oldx2, oldy2;
oldx1 = x1;
oldy1 = y1;
oldx2 = x2;
oldy2 = y2;
dx = x2 - x1;
if (cliptest(-dx, x1 - xmin, &u1, &u2))
if (cliptest(dx, xmax-x1, &u1, &u2))
{
dy = y2 - y1;
157
Ph lc 1
if (cliptest(-dy, y1 - ymin, &u1, &u2))
if (cliptest(dy, ymax - y1, &u1, &u2))
{
if (u2 < 1.0)
{
x2 = x1 + u2 * dx;
y2 = y1 + u2 * dy;
}
if (u1 > 0.0)
{
x1 += u1 * dx;
y1 += u1 * dy;
}
setcolor(RED);
line(oldx1, oldy1, x1, y1);
line(x2, y2, oldx2, oldy2);
setcolor(YELLOW);
line(x1, y1, x2, y2);
}
}
}
void main()
{
int gr_drive = DETECT, gr_mode;
char c;
double x1, y1, x2, y2;
initgraph(&gr_drive, &gr_mode, "");
rectangle(100,50, getmaxx()-100, getmaxy()-50);
randomize();
outtextxy(100, getmaxy()-10, "Nhan phim bat ky de sinh duong khac; ESC de thoat");
do {
x1 = random(getmaxx() / 2);
y1 = random(getmaxy());
x2 = getmaxx()/2 + random(getmaxx() / 2);
y2 = random(getmaxy());
clipline(x1, y1, x2, y2, 100, 50, getmaxx()-100, getmaxy()-50);
c = getch();
} while (c != 27);
closegraph();
}
Bi 3: Php chiu
#include<stdio.h>
#include<dos.h>
#include<conio.h>
#include<graphics.h>
#include<stdlib.h>
#include<math.h>
#include<alloc.h>
#define RADS 0.017453293
struct point{
158
Ph lc 1
int x,y,z;
}
a[8]=
{
{30,100,50},
{30,230,50},
{30,230,90},
{30,100,90},
{120,100,50},
{120,230,50},
{120,230,90},
{120,100,90}
};
int n = 3,*d;
int noi[20][20];
void Dothi()
{
line (getmaxx()/2,getmaxy()/2,getmaxx()-10,getmaxy()/2);
line (getmaxx()/2,10,getmaxx()/2,getmaxy()/2);
line (getmaxx()/2,getmaxy()/2,getmaxx()/2-170,getmaxy()/2+170);
line (getmaxx()/2-170,getmaxy()/2+170,getmaxx()/2-170,getmaxy()/2+166);
line (getmaxx()/2-170,getmaxy()/2+170,getmaxx()/2-163,getmaxy()/2+167);
settextjustify(CENTER_TEXT,CENTER_TEXT);
outtextxy(getmaxx()-9,getmaxy()/2+1,"0");
outtextxy(getmaxx()-9,getmaxy()/2+10,"y");
outtextxy(getmaxx()/2,10,"-");
outtextxy(getmaxx()/2 - 10,10,"z");
outtextxy(getmaxx()/2-155,getmaxy()/2+170,"x");
}
point Diem3d(int &x, int &y, int &z)
{
point p;
p.x = int(getmaxx()/2+ y - x*cos(RADS*45));
p.y = int(getmaxy()/2 - z + x*cos(RADS*45));
return p;
}
point chance(int &x , int &y , int &z)
{
point p;
if(x>=0&&y>=0&&z>=0)
{
p.x = getmaxx()/2+y - x*cos(RADS*45);
p.y = getmaxy()/2-z + x*cos(RADS*45);
}
if(y>=0&&x<0&&z>=0)
{
p.x = y+getmaxx()/2-x*cos(RADS*45);
p.y = getmaxy()/2+z-x*cos(RADS*45);
}
159
Ph lc 1
if(x>=0&&y<0&&z>=0)
{
p.x = getmaxx()/2+y-x*cos(RADS*45);
p.y = getmaxy()/2-(z-x*cos(RADS*45));
}
if(x>=0&&y>=0&&z<0)
{
p.x = getmaxx()/2+(sqrt(pow(x,2)+pow(y,2)))*cos(RADS*45);
p.y = getmaxy()/2+(sqrt(pow(x,2)+pow(y,2)))*cos(RADS*45)-z;
}
if(y>=0&&x<0&&z<0)
{
p.x = getmaxx()/2+y-x*cos(RADS*45);
p.y = getmaxy()/2+(-z-x*cos(RADS*45));
}
return(p);
}
point hinhchieu(int &x, int &y , int &z , int chieu)
{
point p;
if(chieu==1)
{
p.x =int( getmaxx()/2+y - x*cos(RADS*45));
p.y =int( getmaxy()/2+x*cos(RADS*45));
}
if(chieu==2)
{
p.x =int ( getmaxx()/2+y-x*cos(RADS*45)-y);
p.y =int ( getmaxy()/2-z+x*cos(RADS*45));
}
if(chieu == 3)
{
p.x =int( getmaxx()/2+y-x*cos(RADS*45)+x*sin(RADS*45));
p.y =int( getmaxy()/2-z);
}
return(p);
}
point quay(int &x, int &y, int &z, int goc , int chieu)
{
point p;
if(chieu==1)
{
p.x = x*cos(RADS*goc) + z*sin(RADS*goc);
p.z = -x*sin(RADS*goc) + z * cos(RADS*goc);
p.y = y;
}
if(chieu==2)
{
p.y = y*cos(RADS*goc) - z*sin(RADS*goc);
p.z = y*sin(RADS*goc) + z * cos(RADS*goc);
160
Ph lc 1
p.x =x;
}
if(chieu==3)
{
p.x = x*cos(RADS*goc)-y*sin(RADS*goc);
p.y = x*sin(RADS*goc)+y*cos(RADS*goc);
p.z = z;
}
return p;
}
void chieumat(point k[],int t, int &m )
{
int i,j;
for(i = 0 ; i< 8 ; i++)
k[i] = hinhchieu(k[i].x,k[i].y,k[i].z,t);
for( i = 0 ; i< 8 ; i++)
for( j = 0 ; j< 8 ; j++)
{
if(noi[i][j]==1&&noi[j][i]==1)
{
Bresenham_Line(k[i].x,k[i].y,k[j].x,k[j].y,m);
}
}
noi[0][3]=1,noi[3][0]=1;
noi[4][7]=1,noi[7][4]=1;
noi[3][7]=1,noi[7][3]=1;
}
void main()
{
clrscr();
d = &n;
point b[8],g[3][8],c[8],l[8];
int t, goc ;
int driver = DETECT, mode;
initgraph(&driver,&mode,"c:\\tc\\bgi");
Dothi();
for(int i = 0; i < 8; i ++)
b[i] = Diem3d(a[i].x,a[i].y,a[i].z);
for( i = 0; i < 3; i ++ )
{
line(b[i].x,b[i].y,b[i + 4].x,b[i + 4].y);
line(b[i].x,b[i].y,b[i+1].x,b[i+1].y);
line(b[i+4].x,b[i+4].y,b[i+5].x,b[i+5].y);
noi[i][i+4]=1 , noi[i+4][i] =1;
noi[i][i+1] = 1, noi[i+1][i]=1;
noi[i+4][i+5]=1, noi[i+5][i+4]=1;
}
noi[0][3]=1,noi[3][0]=1;
noi[4][7]=1,noi[7][4]=1;
noi[3][7]=1,noi[7][3]=1;
161
Ph lc 1
line(b[0].x,b[0].y,b[3].x,b[3].y);
line(b[4].x,b[4].y,b[7].x,b[7].y);
line(b[3].x,b[3].y,b[7].x,b[7].y);
settextjustify(LEFT_TEXT,RIGHT_TEXT);
printf("\nQuay quanh truc :");
printf("\ny.Bam so 1");
printf("\nx.Bam so 2.");
printf("\nz.Bam so 3.");
scanf("%d",&t);
printf("\nQuay goc bao nhieu do:");
scanf("%d",&goc);
for( i = 0 ; i<= 7 ; i++)
{
c[i] = quay(a[i].x , a[i].y , a[i].z , goc ,t);
l[i] = c[i];
}
for( i = 0; i < 8; i ++)
c[i] = Diem3d(c[i].x,c[i].y,c[i].z);
for( i = 0; i < 3; i ++ )
{
line(c[i].x,c[i].y,c[i + 4].x,c[i + 4].y);
line(c[i].x,c[i].y,c[i+1].x,c[i+1].y);
line(c[i+4].x,c[i+4].y,c[i+5].x,c[i+5].y);
}
line(c[0].x,c[0].y,c[3].x,c[3].y);
line(c[4].x,c[4].y,c[7].x,c[7].y);
line(c[3].x,c[3].y,c[7].x,c[7].y);
outtextxy(10,410,"Chon mat chieu: ");
outtextxy(10,420,"xoy: Bam so 1.");
outtextxy(10,430,"xoz: Bam so 2.");
outtextxy(10,440,"yoz: Bam so 3.");
outtextxy(10,450,"Bam so 4 de ket thuc");
char m;
do{
m = getch();
for(i = 0;i < 8; i ++)
c[i]= l[i];
switch (m)
{
case '1' :{
chieumat(c,1,*(d));
break;
}
case '2' :{
chieumat(c,2,*(d));
break;
}
case '3' :
{
chieumat(c,3,*(d)) ;
162
Ph lc 1
break;
}
}
}while( m !='4');
closegraph();
}
163
Ph lc 2
PH LC 2
bi iu kin 1
MN: K THUT HO
H v tn:
Lp:
1. Dng gii thut Bresenham vit hm sinh on thng (xt tt c trng hp ca h s k).
void Bre_line(int x1, int y1, int x2, int y2, int mau);
2. Xy dng th tc v tam gic (trong h to c gc (0,0) gia mn hnh) c cc to
nh sau:
A(x1,y1) ..... (40,50), B(x2,y2) ....... (90,80), C(x3,y3) ........(80,10)
3. Quay tam gic trn mt gc alfa quanh im c to :
S(x4,y4) .......(-40,50), alfa = 600
4. Chuyn ng tam gic trn (xo hnh c khi chuyn ng) khi dng cc phm mi tn
, ,
B(x2,y2,z2) ......(90,80,0)
C(x3,y3,z3) ....(80,10,90)
D(x4,y4,z4) .....(100,50,60)
164
Ph lc 2
bi iu kin 2
MN: K THUT HO
H v tn:
Lp:
1. Dng gii thut Midpoint vit hm sinh on thng (xt tt c cc trng hp ca h s k).
void Mid_line(int x1, int y1, int x2, int y2, int mau);
2. Xy dng th tc v hnh ch nht (trong h to c gc (0,0) gia mn hnh) c cc to
nh sau:
A(x1,y1) .. (50,50), B(x2,y2) ... (100,50), C(x3,y3) ...(100,80), D(x4,y4)(80,50)
3. Quay hnh ch nht trn mt gc alfa quanh im c to :
S(x4,y4) .......(-40,50), alfa = 450
4.
Chuyn ng hnh ch nht trn (xo hnh c khi chuyn ng) khi dng cc phm mi
tn , , ,
5.
B(x2,y2,z2) ......(90,80,0)
C(x3,y3,z3) ....(80,10,90)
D(x4,y4,z4) .....(100,50,60)
165
Ph lc 2
bi iu kin 3
MN: K THUT HO
H v tn:
Lp:
B(x2,y2,z2) ......(90,80,0)
C(x3,y3,z3) ....(80,10,90)
D(x4,y4,z4) .....(100,50,60)
166
Ph lc 2
bi iu kin 4
MN: K THUT HO
H v tn:
Lp:
B(x2,y2,z2) ......(90,80,0)
C(x3,y3,z3) ....(80,10,90)
D(x4,y4,z4) .....(100,50,60)
a.
b.
V hnh chiu vung gc sau khi quay n xung quanh trc oy mt gc Fi=-600
c.
167
168
Mc lc
MC LC
LI NI U........................................................................................................................ 3
CHNG 1: TNG QUAN V K THUT HO ...................................................... 4
1. CC KHI NIM TNG QUAN CA K THUT HO MY TNH
(COMPUTER GRAPHICS)......................................................................................................... 4
1.1. L ch s pht trin .................................................................................................... 4
1.2. K thut ha vi tnh. ......................................................................................... 5
2. CC K THUT HO .......................................................................................... 5
2.1. K thut ho im (Sample based-Graphics) .................................................... 5
2.2. K thut ho vector............................................................................................. 6
2.3. Phn loi ca ho my tnh................................................................................ 8
2.4. Cc ng dng tiu biu ca k thut ha............................................................ 9
2.5. Cc chun giao din ca h ho........................................................................ 11
3. PHN CNG HO (GRAPHICS HARDWARE)............................................... 11
3.1. Cc thnh phn phn cng ca h ho tng tc.............................................. 11
3.2. My in.................................................................................................................... 12
3.3. Mn hnh CRT ....................................................................................................... 12
3.4. Mn hnh tinh th lng (Liquid Crystal Display LCD) ...................................... 15
Tm tt chng: ............................................................................................................... 16
Bi tp:.............................................................................................................................. 16
Bi tp trc nghim:.......................................................................................................... 17
CHNG 2: CC GII THUT SINH THC TH C S............................................ 18
1. CC I TNG HO C S.......................................................................... 18
1.1. H to th gii thc v h to thit b.......................................................... 18
1.2. im v on thng............................................................................................... 18
2. CC GII THUT XY DNG THC TH C S .............................................. 19
2.1. Gii thut v on thng thng thng ................................................................. 19
2.2. Thut ton DDA (Digital Differential Analizer) ................................................... 19
2.3. Gii thut Bresenham ............................................................................................ 20
2.4. Gii thut trung im-Midpoint............................................................................. 22
2.5. Gii thut sinh ng trn (Scan Converting Circles)(Bresenham)...................... 24
2.7. Gii thut sinh ng trn Midpoint ..................................................................... 26
2.8. Gii thut sinh ng ellipse ................................................................................ 27
2.9. Gii thut sinh k t ............................................................................................. 30
169
Mc lc
2.10. Gii thut sinh a gic (Polygon) .........................................................................32
Tm tt chng: ................................................................................................................36
Bi tp: ..............................................................................................................................36
Bi tp trc nghim:...........................................................................................................37
CHNG 3: CC PHP BIN I HO...................................................................41
1. CC PHP BIN I HNH HC HAI CHIU........................................................41
1.1. Php bin i Affine (Affine Transformations) .....................................................41
1.2. Cc php bin i i tng...................................................................................41
2. TA NG NHT V CC PHP BIN I .................................................45
2.1. To ng nht ....................................................................................................45
2.2. Php bin i vi to ng nht ........................................................................46
3. CC PHP BIN I HNH HC BA CHIU .........................................................47
3.1.Biu din im trong khng gian 3 chiu................................................................47
3.2. Php tnh tin..........................................................................................................47
3.3. Php t l .................................................................................................................48
3.4. Php bin dng .......................................................................................................48
3.5. Php ly i xng...................................................................................................48
3.6. Php quay 3 chiu...................................................................................................49
Tm tt: .............................................................................................................................53
Bi tp: ..............................................................................................................................54
Bi tp trc nghim:...........................................................................................................55
CHNG 4: CC GII THUT HO C S ...........................................................59
1. H TA V M HNH CHUYN I...............................................................59
1.1. Cc h thng to trong ho...........................................................................59
1.2. Php nh x t ca s vo cng xem......................................................................61
2. CC GII THUT XN TI (CLIPPING) ................................................................62
2.1. Khi nim ...............................................................................................................62
2.2. Clipping im .........................................................................................................63
2.3. Xn ta on thng..................................................................................................63
2.4. Gii thut xn ta a gic (Sutherland Hodgman) ..................................................69
Tm tt chng: ................................................................................................................73
Bi tp: ..............................................................................................................................74
Bi tp trc nghim:...........................................................................................................74
CHNG 5: PHP CHIU PROJECTION.......................................................................79
1. KHI NIM CHUNG...................................................................................................79
1.1.Nguyn l v 3D (three-Dimension) .......................................................................79
1.2. c im ca k thut ho 3D ..........................................................................79
170
Mc lc
1.3.Cc phng php hin th 3D ................................................................................. 79
2.PHP CHIU ................................................................................................................ 81
3. PHP CHIU SONG SONG (Parallel Projections ).................................................... 83
3.1.Php chiu trcgiao(Orthographic projection.......................................................... 83
3.2. Php chiu trc lung (Axonometric) ................................................................... 84
3.3. Php chiu xin - Oblique ..................................................................................... 87
4. PHP CHIU PHI CNH (Perspective Projection) ................................................. 89
4.1. Php chiu phi cnh mt tm chiu ..................................................................... 91
4.2. Php chiu phi cnh hai tm chiu ...................................................................... 91
4.3. Php chiu phi cnh ba tm chiu ....................................................................... 92
Tm tt chng: ............................................................................................................... 93
Bi tp:.............................................................................................................................. 93
Bi tp trc nghim:.......................................................................................................... 94
CHNG 6: MU SC TRONG HO ...................................................................... 99
1. NH SNG V MU SC (light and color)............................................................. 99
1.1. Quan nim v nh sng.......................................................................................... 99
1.2. Yu t vt l .......................................................................................................... 99
1.3. Cm nhn mu sc ca con ngi (Physiology - Sinh l - Human Vision) ........ 101
1.4. Cc c trng c bn ca nh sng...................................................................... 103
2. NH SNG N SC ............................................................................................. 104
2.1. Cng sng v cch tnh................................................................................. 104
2.2. Php hiu chnh gama.......................................................................................... 104
2.3. Xp x bn tng - halftone ................................................................................... 105
2.4. Ma trn Dither v php ly xp x bn tng ........................................................ 107
3. CC H MU TRONG MN HNH HA....................................................... 108
3.1. M hnh mu RGB (Red, Green, Blue - , lc, lam)......................................... 108
3.2. M hnh mu CMY (Cyan, Magenta, Yellow - xanh tm, ti, vng) .......... 109
3.3. M hnh mu YIQ............................................................................................... 110
3.4. M hnh mu HSV (Hue, Saturation,Value) - M thut...................................... 110
3.5. Biu mu CIE (1931 Commission Internationale de lEclairage) ............... 112
4. CHUYN I GIA CC H MU ...................................................................... 115
4.1. Chuyn i HSV - RGB ...................................................................................... 115
4.2. Chuyn i RGB sang XYZ................................................................................ 116
Tm tt: .......................................................................................................................... 117
Bi tp:............................................................................................................................ 118
Bi tp trc nghim:........................................................................................................ 118
CHNG 7: NG CONG V MT CONG TRONG 3D ......................................... 120
171
Mc lc
1. NG CONG - CURVE .........................................................................................120
1.1. im biu din ng cong (curve represents points )......................................120
1.2. ng cong a thc bc ba tham bin .................................................................120
1.3. ng cong Hermite ............................................................................................121
1.4. ng cong Bezier...............................................................................................122
1.5. ng cong B-spline............................................................................................124
2. M HNH B MT (Surface) V CC PHNG PHP XY DNG ................130
2.1. Cc khi nim c bn ...........................................................................................130
2.2. Biu din mnh t gic.........................................................................................130
2.3. M hnh ho cc mt cong (Surface Patches).......................................................132
2.4. Mt t cc ng cong .........................................................................................136
Tm tt: ...........................................................................................................................140
Bi tp: ............................................................................................................................141
PH LC 1 .........................................................................................................................142
1. Yu cu........................................................................................................................142
2. Khi to v ng ch ho ..................................................................................142
3. Cc hm c bn ...........................................................................................................143
3.1. Bng mu ca mn hnh ho. ..........................................................................143
3.2. Nguyn s im....................................................................................................144
3.3. Nguyn s ng .................................................................................................144
3.4. Nguyn s hnh ch nht......................................................................................144
3.5. Nguyn s hnh trn .............................................................................................144
3.6. Nguyn s a gic ................................................................................................145
3.7. Nguyn s vn bn ...............................................................................................145
3.8. Ca s (viewport) .................................................................................................146
3.9. To hnh nh chuyn ng ...................................................................................146
PH LC 2 .........................................................................................................................165
TI LIU THAM KHO ...................................................................................................169
MC LC...........................................................................................................................170
172
K THUT HA
M s: 492KTH350
Chu trch nhim bn tho
TRUNG TM O TO BU CHNH VIN THNG 1