Slide Đồ Họa Máy Tính

You might also like

Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 30

HA MY TNH

Trng i Hc Bch Khoa TP H Ch Minh


Khoa Khoa hc & K thut My tnh
CHNG 9:
K THUT LP, QUY
NG DNG TO HOA
VN
Slide 2 Faculty of Computer Science and Engineering - HCMUT
NI DUNG TRNH BY
Gii thiu





Slide 3 Faculty of Computer Science and Engineering - HCMUT
FRACTAL V TNH T TNG T
Tnh t tng t: ging nhau mi t l
Tnh t tng t chnh xc: hnh nh sau khi phng to
ging ht hnh nh ban u
Tnh t tng t thng k: mc bt quy tc v ln
sng ch ging nhau mc trung bnh
V d: ng b bin khi nhn t trn cao, sau tin li
gn
Fractal: cc hnh thc khc nhau ca s t tng t
Cc ng cong c chiu di v tn c chiu nm gia
1 v 2
Slide 4 Faculty of Computer Science and Engineering - HCMUT
FRACTAL V TNH T TNG T
Tinh chnh ng cong: ng cong Koch
To K
n+1
t K
n
bng cch chia mi on ca K
n
thnh 3 phn
bng nhau v thay on gia bng mt tam gic u
Chiu di bng (4/3)
i

K
1
K
2

Slide 5 Faculty of Computer Science and Engineering - HCMUT
FRACTAL V TNH T TNG T
Bng tuyt Koch
Chu vi bng 3(4/3)
n
v cng
Din tch bng (8/5)S
0
khi n v cng
Slide 6 Faculty of Computer Science and Engineering - HCMUT
FRACTAL V TNH T TNG T
V ng cong Koch
V Kn:
if (n bng 0)
V mt on thng;
else
{
V Kn-1
Quay tri 60
0

V Kn-1
Quay phi 120
0

V Kn-1
Quay tri 60
0

}
Slide 7 Faculty of Computer Science and Engineering - HCMUT
SINH CHUI V TO NG CONG PEANO
Dng chui iu khin con ra
'F' c ngha l forward(L, l) (i theo hng hin hnh mt
khong L, c v on thng)
'+' c ngha l turn(A) (quay phi mt gc A )
'-' c ngha l turn(-A) (quay tri mt gc A )

'F-F++F-F', vi gc A bng 60
0
v Knoch bc 1
T chui 'F-F++F-F chuyn thnh chui phc tp?
da vo tp lut sinh
'F' "F-F++F-F" (lut ca ng cong Koch)
Slide 8 Faculty of Computer Science and Engineering - HCMUT
SINH CHUI V TO NG CONG PEANO
Chui ban u: F
Th h th nht: S
1
= "F-F++F-F"
Th h th 2: S
2
= "F-F++F-F-F-F++F-F++F-F++F-F-F-
F++F-F"
for (each character ch in the input file)
if (ch == '+' || ch == '-') write it to the output file;
else if (ch == 'F') write "F-F++F-F" to the output file;
for (each character ch in the input file)
if (ch == '+') turn(A);
else if (ch == '-') turn(-A);
else if (ch == 'F') forward(1, 1);
Slide 9 Faculty of Computer Science and Engineering - HCMUT
SINH CHUI V TO NG CONG PEANO
produce() produce() produce()
a) Hai giai on ca qu trnh sinh
chui
b) H thng hm lp
F F S
n-1
S
n

F-F++F-F
F-F++F-F-F-F++F-F++F-F++F-F-F-
F++F-F
Slide 10 Faculty of Computer Science and Engineering - HCMUT
SINH CHUI V TO NG CONG PEANO
M rng ngn ng
'F' 'F'
'X' "X+YF+ tp lut sinh ng cong con rng
'Y' "-FX-Y"
atom = "FX
Bt u vi nguyn t FX, chng ta c
S
1
= "FX+YF+"
S
2
= "FX+YF++-FX-YF+"
X, Y b qua khi v
F, +, - vn c thng dch nh trc y.
Slide 11 Faculty of Computer Science and Engineering - HCMUT
SINH CHUI V TO NG CONG PEANO
Sinh chui quy v thao tc v
void produceString(char *st, int order){
for(;st ; st++)
switch(*st) {
case '+': CD -= angle; break;
case '-': CD +=angle; break;
case 'F': if (order > 0) produceString(Fstr, order 1);
else forward(length, 1);
break;
case 'X': if (order > 0) produceString(Xstr, order 1);
break;
case 'Y': if (order > 0) produceString(Ystr, order 1);
break;}}
Slide 12 Faculty of Computer Science and Engineering - HCMUT
SINH CHUI V TO NG CONG PEANO
Cho php r nhnh:
'[' : saveTurtle() lu trng thi hin ti ca con ra
']' : restoreTurtle() khi phc trng thi ca con ra v
trng thi trc .
Trng thi ca con ra = {CP, CD}
thm cc lnh sau vo produceString():
'[': saveTurtle();break; y trng thi hin hnh ca
con ra vo ngn xp.
']': restoreTurtle();break; ly trng thi hin hnh t
nh ngn xp.
Slide 13 Faculty of Computer Science and Engineering - HCMUT
S DNG H HM LP TO HNH NH
My photocopy thc nghim
Cc hnh nh u ra c hi t v hnh nh no
khng?
a)
b)
u vo
bn copy
my photocopy
hnh nh ban u
I
0

Slide 14 Faculty of Computer Science and Engineering - HCMUT
S DNG H HM LP TO HNH NH
My photocopy Sierpinski
-Hnh nh hi t v tam gic Sierpinski v khng ph
thuc vo hnh nh ban u
-Gm 3 thu knh mi thu knh thc hin ba php
bin i cho ch F nhn c 3 ch F mi
Slide 15 Faculty of Computer Science and Engineering - HCMUT
S DNG H HM LP TO HNH NH
My photocopy Sierpinski
- Cc php bin i l
|
|
|
|
|
|
.
|

\
|
=
1 0 0
0
2
1
0
0 0
2
1
1
M
|
|
|
|
|
|
.
|

\
|
=
1 0 0
2
1
2
1
0
0 0
2
1
2
M
|
|
|
|
|
|
.
|

\
|
=
1 0 0
2
1
2
1
0
4
1
0
2
1
3
M
tin li, chng ta lit k cc phn t ca ma trn
di dng danh sch
T = {m
11
, m
12
, m
21
, m
22
, m
13
, m
23
}
Slide 16 Faculty of Computer Science and Engineering - HCMUT
S DNG H HM LP TO HNH NH
L thuyt ca qu trnh copy
hnh nh nhp I = tp cc im mu en = {(x, y) sao
cho (x, y) c t mu en}
hnh nh xut = T1(I) T2(I) T3(I)
tng qut ha W(.) = T1(.) T2(.) T3(.)
khi lp i lp li thao tc a hnh nh xut vo ng
nhp th qu o ca I
0
, I
1
, I
2
... s hi t v mt hnh
nh gi l nhn t hp dn A
W(A) = A
A khng ph thuc vo hnh nh ban u
Slide 17 Faculty of Computer Science and Engineering - HCMUT
S DNG H HM LP TO HNH NH
Thc hin thao tc v ln lp th k
I
0
l mt ng gp khc
I
0
l mt im
V d: v l cy dng x
T1 = {0, 0, 0, .16, 0, 0};
T2 = {.2, .23, -.26, .22, 0, 1.6};
T3 = {-.15, .26, .28, .24, 0, .44};
T4 = {.85, -.04, .04, .85, 0, 1.6};
Slide 18 Faculty of Computer Science and Engineering - HCMUT
S DNG H HM LP TO HNH NH
void superCopier(RealPolyArray pts, int k)
{
int i, j;
RealPolyArray newpts;
if(k == 0) drawPoints(pts);
else for(i = 1; i <= N; i++)
{
newpts.num = N*pts.num;
for(j = 0; j < newpts.num; j++)
transform(affines[i],pts.pt[j], newpts.pt[j]);
superCopier(newpts, k-1);
}
}
Slide 19 Faculty of Computer Science and Engineering - HCMUT
S DNG H HM LP TO HNH NH
Slide 20 Faculty of Computer Science and Engineering - HCMUT
TP MANDELBROT
Slide 21 Faculty of Computer Science and Engineering - HCMUT
TP MANDELBROT
f(z) = z
2
+ c
vi gi tr ban u s, ta c qu o
d1 = (s)
2
+ c
d2 = ((s)
2
+ c)
2
+ c
d3 = (((s)
2
+ c)
2
+ c)
2
+ c
d4 = ((((s)
2
+ c)
2
+ c)
2
+ c)
2
+ c
(.)
2
+ c
d
k

s
f(.)
Slide 22 Faculty of Computer Science and Engineering - HCMUT
TP MANDELBROT
s v c c th l s phc
qu o hi t v qu o phn k
im c nh ca h thng tha mn
f(z) = z z
2
+ c = z



im c nh hp dn, im c nh y
c p p =
+
4
1
2
1
,
Slide 23 Faculty of Computer Science and Engineering - HCMUT
TP MANDELBROT
nh ngha:
vi s lun bng 0
im c nm trong M nu qu o ca 0 hi t
im c nm ngoi M nu qu o ca 0 phn k
Slide 24 Faculty of Computer Science and Engineering - HCMUT
TP MANDELBROT
c c nm trong tp M hay khng?
d
k
vt qua gi tr 2 th qu o phn k
thi gian d
k
vt qua gi tr 2 c gi l thi gian c tr
c nm trong M c thi gian c tr rt ln (Cn trn l Num)
int dwell(double cx, double cy){
#define Num 100
double tmp, dx = cx, dy = cy, fsq = cx * cx + cy * cy;
for(int count = 0; count <= Num && fsq <= 4; count++)
{
tmp = dx;
dx = dx * dx - dy * dy + cx;
dy = 2.0 * tmp * dy + cy;
fsq = dx * dx + dy * dy;
}
return count;}
(x + yi)
2
= (x
2
y
2
) + (2xy)i,
Slide 25 Faculty of Computer Science and Engineering - HCMUT
TP MANDELBROT
Xc nh mu cho im c
c nm trong M: t bng mu en
c nm ngoi M: float v = d/(float) Num;
glColor3f(v*v, v*v, 0.2);
d
cng mu
1
Num
en xanh
, vng
Slide 26 Faculty of Computer Science and Engineering - HCMUT
TP MANDELBROT
Xc nh s tng ng gia pixel trn mn hnh vi s
phc c
ca
s
|
|
|
|
.
|

\
|
+

+
+ = W
cols
j
P W
cols
i
P c
y x ij
2
1
,
2
1
Slide 27 Faculty of Computer Science and Engineering - HCMUT
TP MANDELBROT
for( j = 0; j < rows; j++)
for(i = 0; i < cols; i++)
{
tm s phc c tng ng vi pixel v tr i, j
xc nh thi gian c tr ca qu o
da trn thi gian c tr xc nh mu sc tng
ng
setPixel(i, j, color);
}
Slide 28 Faculty of Computer Science and Engineering - HCMUT
TP JULIA
cho c c nh, kho st cc gi tr khc nhau ca s
Tp Julia y : l tp hp tt c cc im khi u s
c qu o hi t.
v tp Julia
for( j = 0; j < rows; j++)
for(i = 0; i < cols; i++){
tm s phc s tng ng vi pixel v tr i, j
xc nh thi gian c tr ca qu o
da trn thi gian c tr xc nh mu sc tng
ng
setPixel(i, j, color);}
phi truyn c s v c cho hm dwell()
Slide 29 Faculty of Computer Science and Engineering - HCMUT
TP JULIA
Tp Julia J
c
: l ng bin ca tp Julia y K
c

Tin nh ca z:
Cc tin nh ca z c qu o ging nh qu o ca z
c z
a) b)
tin nh
ca s
Slide 30 Faculty of Computer Science and Engineering - HCMUT
TP JULIA
V tp Julia
do{
if(coin flip is head)
else
draw dot at z;
}while (not bored);
Tnh cn bc hai ca z = x + iy
, y>= 0
, y < 0
c z z + =
c z z =
ib a z + =
ib a z + = 2
| | x z
a
+
=
2
| | x z
b

=

You might also like