chương v · web viewbảo toàn tỷ lệ về khoảng cách: giả sử c là điểm chia...

54
Chương III. Các phép biến hình Các phép biến đổi hình học cơ sở bao gồm: - tịnh tiến /dời hình (translation) - quay (rotation) - tỷ lệ /vị tự / (scaling) Ví dụ: - một báo cáo viên muốn thu nhỏ các biểu đồ trong báo cáo - một kiến trúc sư muốn nhìn tòa nhà ở những góc nhìn khác nhau - nhà thiết kế muốn quan sát, tách rời và chỉnh sửa từng chi tiết của mẫu thiết kế - ... Có hai quan điểm về phép biến đổi hình học, có liên quan với nhau và đều có những lợi thế riêng: - Biến đổi đối tượng (object transformation): tọa độ của từng điểm trên đối tượng được biến đổi theo công thức của phép biến hình, tạo ra ảnh của đổi tượng qua phép biến hình đó. - Biến đổi hệ tọa độ (coordinate transformation): tạo ra một hệ tọa độ mới, sau đó tất cả các điểm của đối tượng sẽ được chuyển về hệ tọa độ đó. Phép biến hình affin Ánh xạ T: R 2 R 2 P(x,y) Q(x*,y*) trong đó: và f() và g() là hai hàm tuyến tính thì được gọi là phép biến hình Affin (affine). Ta chỉ khảo sát các phép biến hình loại này. Phép biến hình affin có những tính chất sau: - Bảo toàn đường thẳng: ảnh của đường thẳng qua phép biến hình affine là đường thẳng. - Bảo toàn tính song song của các đường thẳng: ảnh của các đường thẳng song song qua phép biến hình affine cũng là các đường thẳng song song. - Bảo toàn tỷ lệ về khoảng cách: giả sử C là điểm chia đoạn AB theo tỷ lệ x và A’,B’,C’ lần lượt là ảnh của A,B,C qua 1

Upload: phungdieu

Post on 08-May-2018

217 views

Category:

Documents


5 download

TRANSCRIPT

Chng V

Chng III. Cc php bin hnh

Cc php bin i hnh hc c s bao gm:

tnh tin /di hnh (translation)

quay (rotation)

t l /v t / (scaling)

V d:

mt bo co vin mun thu nh cc biu trong bo co

mt kin trc s mun nhn ta nh nhng gc nhn khc nhau

nh thit k mun quan st, tch ri v chnh sa tng chi tit ca mu thit k

...

C hai quan im v php bin i hnh hc, c lin quan vi nhau v u c nhng li th ring:

Bin i i tng (object transformation): ta ca tng im trn i tng c bin i theo cng thc ca php bin hnh, to ra nh ca i tng qua php bin hnh .

Bin i h ta (coordinate transformation): to ra mt h ta mi, sau tt c cc im ca i tng s c chuyn v h ta .

Php bin hnh affin

nh x

T: R2 ( R2

P(x,y) (Q(x*,y*)

trong :

v f() v g() l hai hm tuyn tnh th c gi l php bin hnh Affin (affine). Ta ch kho st cc php bin hnh loi ny. Php bin hnh affin c nhng tnh cht sau:

Bo ton ng thng: nh ca ng thng qua php bin hnh affine l ng thng.

Bo ton tnh song song ca cc ng thng: nh ca cc ng thng song song qua php bin hnh affine cng l cc ng thng song song.

Bo ton t l v khong cch: gi s C l im chia on AB theo t l x v A,B,C ln lt l nh ca A,B,C qua mt php bin hnh affin. Khi C cng chia on AB theo t l x.

4.1. Cc php bin hnh phng

4.1.1 Cc php bin hnh trong h ta Decac

Php tnh tin

nh ca php tnh tin theo vector (a,b) ca im P(x,y) l im Q(x*,y*)

+

=

+

=

b

y

y

a

x

x

*

*

Vector tnh tin (a,b) cn gi l vector di. Chng ta c th p dng quy tc trn cho mi im ca i tng dch chuyn n. n gin hn, tnh tin mt a gic ch cn tnh tin cc nh ca n ri v li a gic mi. Tng t, i vi ng trn, ellip ta tnh tin tm ca chng ti v tr mi ri v li.

Php t l

Lm thay i kch thc ca i tng.

=

=

y

ty

y

x

tx

x

.

*

.

*

trong ty, tx l h s co dn theo trc tung v trc honh. Khi tx,ty nh hn 1, php bin i s thu nh i tng. Khi tx,ty ln hn 1, php bin i s phng to i tng. Khi tx=ty: ta gi l php ng dng (uniform scaling), n bo ton t l v kch thc ca vt th.

=

=

)

,

(

*

)

,

(

*

y

x

g

y

y

x

f

x

Php quay

Php quay lm thay i hng ca i tng. xc nh php quay, ta cn bit tm quay v gc quay. Php quay im P(x,y) quanh gc ta mt gc ( to thnh im nh Q(x*,y*) c cng thc nh sau:

+

=

-

=

a

a

a

a

cos

.

sin

.

*

sin

.

cos

.

*

y

x

y

y

x

x

4.1.2 Ma trn ca php bin hnh.

Nu ta biu din im P,Q di dng vector dng (x,y) (x*,y*) nh trn th ma trn ca cc php bin hnh nh sau:

Php tnh tin:

(x*,y*) = (x,y) + (a,b)

Q = P + T trong T = (a,b)

Php t l:

(

)

(

)

=

ty

tx

y

x

y

x

0

0

,

*

*,

Q = P(S trong

=

ty

tx

S

0

0

l ma trn ca php ng dng

Php quay quanh gc ta :

(

)

(

)

-

=

a

a

a

a

cos

sin

sin

cos

,

*

*,

y

x

y

x

hay Q=P(R trong

-

=

a

a

a

a

cos

sin

sin

cos

R

l ma trn ca php quay

Tuy nhin, cch biu din trn s gp kh khn khi kt hp cc php bin i li vi nhau v biu din ca php tnh tin (cng ma trn) khc vi hai php bin hnh cn li (nhn ma trn). Chng hn, khi thit k mt ng c, ta mun tho ring mt chi tit ra ngoi (tnh tin), xoay 1 gc (quay) ri lp vo ch c (tnh tin). Khi ta phi thc hin 3 php tnh trn ma trn (+ ( + ). Ngi ta tm ra cch biu din trong h ta thun nht, nh rt gn chui bin i trn v ch mt php tnh.

4.1.3 H ta thun nht (homogeneous coordinates)

Ta thun nht (i khi cn gi l ng nht) ca im (x,y) trn mt phng c biu din bng b ba (xh,yh,h) lin h vi ta (x,y) bi cng thc

h

y

y

h

x

x

h

h

=

=

,

Nu mt im c ta thun nht l (x,y,z) trong khng gian Decac th n cng c ta thun nht l (x.h,y.h,z.h) trong h l s thc khc khng bt k. Ngc li im (x,y,z) trong h ta thun nht s c tng ng vi im (x/z,y/z) trong h ta Decac. Ta thun nht ca mt im trong khng gian 3 chiu hay nhiu chiu cng c xc nh theo cch tng t. n gin ha, ngi ta thng chn h=1, lc ny im P(x,y) s c biu din di dng ta thun nht l (x,y,1)

4.1.4 Ma trn ca cc php bin hnh trong h ta thun nht

Php tnh tin:

(

)

(

)

=

1

0

1

0

0

0

1

1

,

,

1

*,

*,

b

a

y

x

y

x

Hay Q = P ( T trong T l ma trn ca php tnh tin

=

1

0

1

0

0

0

1

b

a

T

Php t l:

(

)

(

)

=

1

0

0

0

0

0

0

1

,

,

1

*,

*,

ty

tx

y

x

y

x

Hay Q = P ( S trong S l ma trn ca php t l

=

1

0

0

0

0

0

0

ty

tx

S

Php quay quanh gc ta :

(

)

(

)

-

=

1

0

0

0

cos

sin

0

sin

cos

1

,

,

1

*,

*,

a

a

a

a

y

x

y

x

Hay Q = P ( R trong R l ma trn ca php quay

-

=

1

0

0

0

cos

sin

0

sin

cos

a

a

a

a

R

4.1.5 Kt hp cc php bin hnh

Bt k php bin hnh no cng c kt hp t php tnh tin, t l v quay.

Khi p dng lin tip cc php bin hnh trn i tng, ta phi thc hin nhiu php nhn vi cc ma trn tng ng. Thay vo , ta s chun b sn ma trn tch v s dng nh ma trn ca php bin hnh tng th.

Kt hp cc php tnh tin

Ta thc hin php tnh tin T1 vi vector tnh tin (a,b) ln im P(x,y) v thu c nh Q, sau thc hin tip php tnh tin T2(c,d) i vi Q v thu c Q(x*,y*)

*)

*,

(

)

'

,

'

(

'

)

,

(

)

,

(

)

,

(

2

1

y

x

Q

y

x

Q

y

x

P

d

c

T

b

a

T

Kt hp ca 2 hay nhiu php tnh tin cho kt qu l php tnh tin c ma trn l tng cc ma trn hnh phn:

+

+

=

+

+

=

1

0

1

0

0

0

1

1

0

1

0

0

0

1

1

0

1

0

0

0

1

)

,

(

)

,

(

).

,

(

2

1

d

b

c

a

d

c

b

a

d

b

c

a

T

d

c

T

b

a

T

Kt hp cc php t l

Tng t nh php tnh tin, kt hp ca nhiu php t l l mt php t l. Gi s ta kt hp hai php t l sau: S = S1. S2 Ma trn kt hp s l

=

1

0

0

0

0

0

0

1

0

0

0

0

0

0

1

0

0

0

0

0

0

2

1

2

1

1

2

1

1

ty

ty

tx

tx

ty

tx

ty

tx

Kt hp cc php quay

Tng t nh php tnh tin, kt hp ca nhiu php quay quanh gc ta cng l mt php quay quanh gc ta . Gi s php quay R1c gc quay l (1, php quay R2 c gc quay (2, ma trn kt hp ca hai php quay R1. R2 l

(

)

(

)

(

)

(

)

+

+

-

+

+

=

-

-

1

0

0

0

cos

sin

0

sin

cos

1

0

0

0

cos

sin

0

sin

cos

1

0

0

0

cos

sin

0

sin

cos

2

1

2

1

2

1

2

1

2

2

2

2

1

1

1

1

a

a

a

a

a

a

a

a

a

a

a

a

a

a

a

a

Php quay vi tm quay bt k

Php quay quanh tm quay A(x,y) gc quay ( c th phn tch thnh cc php bin hnh c s sau:

Tnh tin theo vector (-x,-y) a tm quay v gc ta

Quay quanh gc ta mt gc (

Tnh tin theo vector (x,y) a i tng v ch c

(

)

(

)

-

+

-

+

-

-

=

=

-

-

-

1

cos

1

.

sin

sin

.

cos

1

0

cos

sin

0

sin

cos

1

0

1

0

0

0

1

1

0

0

0

cos

sin

0

sin

cos

1

0

1

0

0

0

1

y

x

y

x

y

x

y

x

a

a

a

a

a

a

a

a

a

a

a

a

Php i xng

Php i xng trc c th xem l php quay 1800 quanh trc i xng. Php i xng qua trc honh v trc tung c ma trn ln lt l

-

=

-

=

1

0

0

0

1

0

0

0

1

,

1

0

0

0

1

0

0

0

1

Oy

Ox

M

M

Php bin dng

L php bin hnh lm thay i t l v kch thc, ni cch khc l lm mo m i tng. Hai php bin dng l:

Php bin dng theo trc honh lm thay i honh cn tung gi nguyn

Php bin dng theo trc tung lm thay i tung cn honh gi nguyn

=

=

1

0

0

0

1

0

0

1

,

1

0

0

0

1

0

0

1

t

M

t

M

Oy

Ox

Php bin i ngc

Mt v d cho php bin i ngc chnh l thao tc Undo m cc phn mm v thit k lun c. Gi s php bin hnh M c ma trn nh sau:

=

1

0

0

f

e

d

c

b

a

M

gi thit ad-bc ( 0. Khi php bin i ngc ca M, k hiu l M-1, c biu din nh sau:

-

-

-

-

-

=

-

1

0

0

1

1

af

be

de

cf

a

c

b

d

bc

ad

M

Gi S (tx,ty) l php ng dng, S-1 c biu din nh sau:

(

)

=

-

1

0

0

0

1

0

0

0

1

,

1

ty

tx

ty

tx

S

Php quay quanh gc ta R(() c bin i ngc nh sau:

(

)

)

(

1

0

0

0

cos

sin

0

sin

cos

1

a

a

a

a

a

a

-

=

-

=

-

R

R

4.2. Cc php bin hnh trong khng gian 3 chiu

Hon ton tng t nh trong mt phng, ta cng s dng cc ma trn trong h ta thun nht biu din cc php bin hnh: tnh tin, quay v ng dng.

Php tnh tin

Ma trn ca php tnh tin T(a,b,c) l

=

1

0

1

0

0

0

0

1

0

0

0

0

1

)

,

,

(

c

b

a

c

b

a

T

Php t l

Ma trn ca php t l S(a,b,c) l

=

1

0

0

0

0

0

0

0

0

0

0

0

0

)

,

,

(

c

b

a

c

b

a

S

trong a,b,c l h s t l tng ng theo cc trc ta Ox,Oy,Oz

Php quay

Nu trong mt phng ta c php quay quanh mt tm quay th trong khng gian 3 chiu ta c php quay quanh mt trc. K hiu ma trn ca cc php quay quanh 3 trc Ox, Oy, Oz ln lt l R(x,(), R(y,(), R(z,() vi ( l gc quay. Ta c

-

=

-

=

-

=

1

0

0

0

0

cos

sin

0

0

sin

cos

0

0

0

0

1

)

,

(

1

0

0

0

0

cos

0

sin

0

0

1

0

0

sin

0

cos

)

,

(

1

0

0

0

0

1

0

0

0

0

cos

sin

0

0

sin

cos

)

,

(

a

a

a

a

a

a

a

a

a

a

a

a

a

a

a

x

R

y

R

z

R

Ch : vn nh trc, gc quay ( c gi tr i s. Chiu quay dng c xc nh theo quy tc nh sau:

- Quay quanh trc Ox: chiu quay dng l chiu quay t trc y n trc z

- Quay quanh trc Oy: chiu quay dng l chiu quay t trc z n trc x

- Quay quanh trc Oz: chiu quay dng l chiu quay t trc x n trc y

Ni cch khc, nu t mt nhn thng vo trc ta i ti th chiu quay dng l ngc chiu kim ng h. Hoc c th dng quy tc bn tay phi: ngn ci ch chiu i ti (vector php tuyn), bn ngn khum li ch chiu quay dng.

Chng IV. Th vin ha 2D, 3D

Trong chng ny chng ta s kho st th vin ha ly t cun GRAPHICSME DANS LE PLAN ET DANS LESPACE AVEC TURBO PASCAL, R.DONY, 1990.

1. Nguyn tc thit k ca th vin

1. Chng ta s xy dng nhng cng c chuyn i t h ta Ton hc (h Decac thun, ta l s thc khng gii hn) sang h ta mn hnh (h Decac ngc, ta l s nguyn). B cng c gm cc th tc sau:

Th tc

Chc nng

Procedure CAT( )

- o tung y,

- chiu ca s ln mn hnh,

- ct nhng phn nm ngoi phm vi ca s

Procedure CUASO( )

thit lp nn ca s

Procedure TAMNHIN( )

thit lp nn tm nhn

2. Sau khi c b cng c chuyn ta trn, cc lnh v v sau u coi nh ang v trn h ta Ton hc quen thuc. Vic bin i v h ta mn hnh v hin th c thc hin t ng bi cc cng c c.

3. on thng c chn lm nguyn th ha. Mi i tng hnh hc khc u c xy dng t on thng, chng hn mt im c v nh mt on thng vi 2 u mt trng nhau, cc ng cong c v bng mt lot on thng ngn lin tip nhau, ng trn c xp x ha bi mt a gic u nhiu cnh ...

2. Khi nim ca s, tm nhn

V l thuyt, khng gian 2D thc t l v hn nhng con ngi khng th bao qut ht m thng ch quan tm ti mt vng no . Ca s c nh ngha l hnh ch nht cha nhng i tng ang c kho st. Chng hn nhn ln mt bc tranh tng, ta ch vo mt ha tit no , khi ca s l hnh ch nht nh nht c th cha n. Khi chuyn s ch sang nhng phn khc, ca s s c di chuyn theo.

Th tc tit lp ca s nh sau: CuaSo (F1,F2,F3,F4: Real)

Trong F1, F2, F3, F4 l ta cc nh ca s (hnh v) v phi tha mn:

F1 < F2, F3 < F4

PROCEDURE Cuaso (F1,F2,F3,F4 : Real);

BEGIN

XgFen := F1; {Hoanh do trai}

XdFen := F2; {Hoanh do phai}

YbFen := F3; {Tung do duoi}

YhFen := F4 {Tung do tren}

END;

V d ta gi th tc sau thit lp ca s vung: CuaSo (13.5, 22, 18.5, 27);

Hnh nh m ta ang kho st trn ca s phi c th hin ln mn hnh my tnh. Khng phi lc no ta cng dng ton b mn hnh m thng chia thnh nhiu vng, mi vng cho mt mc ch, hin th mt ca s khc nhau. Ta gi vng mn hnh l tm nhn ca ca s tng ng.

Th tc thit lp tm nhn nh sau: TamNhin (C1, C2, C3, C4: Integer) trong

0( C1 < C2 ( GetMaxX

0( C3 < C4 ( GetMaxY

PROCEDURE TamNhin (C1,C2,C3,C4 : Integer);

BEGIN {C i chiu trc Y }

XgClot := C1; {Honh tri}

XdClot := C2; {Honh phi}

YbClot := C3; {Tung di}

YhClot := C4; {Tung trn}

Xtl := (XdClot - XgClot) / (XdFen - XgFen); {t l chiu ngang}

Ytl := (YhClot - YbClot) / (YhFen - YbFen); {t l chiu dc}

SetviewPort (XgClot, MaxY-YhClot, XdClot, MaxY-YbClot, ClipOn) {khng v ra ngoi}

END;

V d: thit lp ch lm vic ton mn hnh ta gi th tc

PROCEDURE TamNhinDay; {tm nhn y}

BEGIN

TamNhin (0,MaxX,0,MaxY) {Tm nhn l ton b mn hnh}

END;

3. on thng, im

on thng l nguyn th ha nh nht. Ta v on thng bng cch trc ht t con tr ha vo im u mt th nht, sau v on ni ti u mt th hai. Ta dng cp bin (XP1, YP1) thao di v nh v con tr ha.

PROCEDURE VeDen (X,Y : Real);{ V on ni (XP1,YP1) n (X,Y) v clipping n}

BEGIN

XP2 := X;

YP2 := Y;

Cat (XP1,YP1,XP2,YP2); {clipping}

XP1 := XP2; {chuyn con tr ti u mt th hai va xc nh }

YP1 := YP2

END;

PROCEDURE Diem (X,Y : Real);

BEGIN

XP1 := X;

YP1 := Y;

VeDen (X,Y)

END;

4. Chiu ca s ln tm nhn

Sau khi xc nh c ca s (vng cn kho st) v tm nhn (vng dnh cho vic hin th), cng vic tip theo l chiu ton b ni dung ca s ln mn hnh. lm vic ny ta cn c cng thc ton hc ca php chiu cho php xc nh ta nh (Xe, Ye) ca im thc (Xr, Yr) qua php chiu.

u tin ta tnh t l gia ca s v tm nhn:

Xtl=(C2-C1)/(F2-F1), Ytl = (C4-C3) /(F4-F3)

Khi ta c:

Xe = (Xr-F1). Xtl; Ye = (F4-Yr). Ytl

V d:

Xt ca s (-3,3,-2,3), tm nhn (100,700,50,300)

Gi s (Xr,Yr) = (1.5, 1)

Ta c

Xtl = (700-100) / (3+3) = 100;

Ytl = (300 -50) / (3+2) = 50

Vy

Xe = (1.5+3).100 = 450;

Ye = (3-1).50 = 100;

Hin tng mo hnh

Gi B v H l y v chiu cao ca s, cn B, H l y v chiu cao ca tm nhn. Khi chiu ca s ln tm nhn, nu t l B/H ( B/H th s xy ra hin tng mo hnh, ngha l i tng khng cn gi c nguyn vn hnh dng lc u

Hiu ng Zoom

Ta c nh tm nhn trn mn hnh v xt cc trng hp sau:

Trong khi gi nguyn kch thc ca s, ta di chuyn n ti nhng v tr khc nhau trong khng gian thc, khi trn tm nhn hin ra nhng phn khc nhau ca nh. Hnh ca nh c chiu ln mn hnh c kch thc khng i

Khi kch thc ca s b thu nh li, phn din tch c kho st ca i tng cng thu nh li theo nhng nh ca n trn mn hnh li c phng to ra

Ngc li, nu ca s c phng to ra th phn din tch c kho st ca i tng cng tng ln nhng nh ca n trn mn hnh li thu nh li

Vn Clipping (ct b nhng phn khng nm trong ca s)

Vn t ra l cn phi ct b nhng phn ca i tng khng nm trong ca s. V ta coi on thng l nguyn th ha nn vn quy v vic lm sao clipping mt on thng. Sau y ta p dng thut ton Cohen Sutherland gii quyt vn ny.

Trc ht xt mt im (X,Y). Nu ta ca n vi phm mt trong cc iu kin sau th im nm ngoi ca s v s b loi b

F1( X ( F2 v F3( Y ( F4

Du bng cho thy cc im nm trn bin c coi nh nm trong ca s.

Vi on thng, ta ko di cc ng bin ca s thnh cc ng thng. Chng chia mt phng lm 9 vng. Mi im trong mt phng s tng ng vi m 4 bit c xc nh theo quy tc sau:

bit th 1 l 1 nu im nm bn tri ca s

bit th 2 l 1 nu im nm bn phi ca s

bit th 3 l 1 nu im nm bn di ca s

bit th 4 l 1 nu im nm bn trn ca s

Nhn xt;

on thng nm hon ton trong ca s khi v ch khi m ca c 2 u mt l 0000. Ngc li, nu mt trong hai m khc 0000 th on thng c 1 phn hoc ton b nm ngoi ca s

Nu kt qu php AND hai m ca 2 u mt khc 0000 th on thng tng ng hon ton nm ngoi ca s v s khng c hin th ln mn hnh.

Cc bc:

Nu c hai m thuc tnh u l 0000 th on thng hon ton nm trong ca s

Nu kt qu php AND hai m khc 0000 th on thng hon ton nm ngoi ca s

Trng hp khng ri vo hai kh nng trn: giao im ca on thng vi bin ca s chia on thng cho thnh nhiu on. Ta xt tng on theo cch nh trn.

Ton b cc bc k trn c th hin trong th tc CAT di y:

PROCEDURE Cat (X1,Y1,X2,Y2 : Real);

TYPE Region = (Left,Right,Low,High);

Code = SET OF Region;

VAR C,C1,C2 : Code;

X,Y : Real;

XX1,YY1 : Integer;

XX2,YY2 : Integer;

PROCEDURE MaNhiPhan (X,Y : Real; VAR C : Code); {To m thuc tnh cho 2 u, xy dng tp C ca im (X,Y)}

BEGIN

C := [];

IF X < XgFen THEN C := [Left]{nm bn tri ng thng X=XgFen}

ELSE IF X > XdFen THEN C := [Right];

IF Y < YbFen THEN C := C+[Low]

ELSE IF Y > YhFen THEN C := C+[High]

END; {MaNhiPhan}

BEGIN

MaNhiPhan (X1,Y1,C1);

MaNhiPhan (X2,Y2,C2);

WHILE (C1 []) OR (C2 []) DO

{chng no t nht 1 trong 2 im cn nm ngoi ca s }

BEGIN {Ct dn tm on hin th}

IF (C1*C2) [] THEN Exit; {C1(C2 ((: ct ton b}

IF C1 = [] THEN C := C2 ELSE C := C1; {chn C l im nm ngoi}

IF Left IN C

THEN

BEGIN

{tm giao im (X,Y) vi dt X=XgFen}

X := XgFen;

Y := Y1+(Y2-Y1)*(XgFen-X1)/(X2-X1)

END

ELSE IF Right IN C

THEN

{tm giao im (X,Y) vi dt X=XdFen}

BEGIN

X := XdFen;

Y := Y1+(Y2-Y1)*(XdFen-X1)/(X2-X1)

END

ELSE IF Low IN C

THEN

BEGIN

Y := YbFen;

X := X1+(X2-X1)*(YbFen-Y1)/(Y2-Y1)

END

ELSE IF High IN C THEN

BEGIN

Y := YhFen;

X := X1+(X2-X1)*(YhFen-Y1)/(Y2-Y1)

END;

IF C = C1 {X1,Y1 nm ngoi ca s}

THEN BEGIN

X1 := X; {gn giao im (X,Y) mi tm c cho (X1,Y1)}

Y1 := Y;

MaNhiPhan (X,Y,C1) {tnh li tp C1}

END

ELSE BEGIN {X2,Y2 nm ngoi ca s }

X2 := X;

Y2 := Y;

MaNhiPhan (X,Y,C2)

END

END; {While}

XX1 := Round ((X1-XgFen)*Xtl);

YY1 := Round ((YhFen-Y1)*Ytl);

XX2 := Round ((X2-XgFen)*Xtl);

YY2 := Round ((YhFen-Y2)*Ytl);

MoveTo (XX1,YY1);

LineTo (XX2,YY2)

END;

5. V trc ta

V tr tng i gia h trc v ca s c rt nhiu trng hp. Ta quy c ch v trc mt cch tng i, khng tnh ton chnh xc theo v tr tuyt i, ni cch khc vic v trc ch mang tnh trang tr, mang li cho ngi xem cm gic v v tr tng i ca i tng so vi h trc.

Trc no ct ca s th nguyn v v ln tm nhn

Trc no khng ct qua ca s: tnh tin p st vo mp tri hoc mp di ca s

Trc no vn trng vi mp tri hoc mp di ca s th nguyn

Nh vy cui cng hnh dng ca s c km theo h trc ta s c mt trong 4 dng sau:

PROCEDURE Truc;

CONST dX = 5;

dY = 4;

PROCEDURE MuiTenTrenX; {gi s lc u con tr CP A}

BEGIN {Ve mui ten tren truc X}

MoveRel (-dX,dY); {ko CP v B}

LineRel (dX,-dY); {v BA}

MoveRel (-dX,-dY); {ko CP v C}

LineRel (dX,dY) {v CA}

END;

PROCEDURE MuiTenTrenY;

BEGIN {Ve mui ten tren truc Y}

MoveRel (-dY,dX);

LineRel (dY,-dX);

MoveRel (dY,dX);

LineRel (-dY,-dX)

END;

BEGIN

IF (XgFen < 0) AND (XdFen > 0)

THEN XOrig := 0

ELSE XOrig := XgFen; {mep trai}

IF (YbFen < 0) AND (YhFen > 0)

THEN YOrig := 0

ELSE YOrig := YbFen; {mep duoi}

Diem (XgFen,YOrig);

VeDen (XdFen,YOrig); {Ve truc X}

MuiTenTrenX;

Diem (XOrig,YbFen);

VeDen (XOrig,YhFen); {Ve truc Y}

MuiTenTrenY;

END;

V vch chia

Khi v trc ta ta phi v cc vch chia th hin o trn cc trc . Vn l khong chia phi i qua gc ta . hnh sau minh ha mt trng hp v sai vch chia

Cc th tc sau m nhim vic v cc vch chia trn trc ta :

Procedure ChinhTrucX;

Procedure ChinhTrucY;

Procedure DoDo;

ng vin v li

Th tc Luoi() v li vung nhm gip ngi xem nh gi v tr ta d dng hn. Th tc Vien() v mt ng vin bao quanh tm nhn

PROCEDURE Vien (Mau : Byte);

BEGIN

SetColor (Mau);

Diem (XgFen,YbFen);

VeDen (XdFen,YbFen);

VeDen (XdFen,YhFen);

VeDen (XgFen,YhFen);

VeDen (XgFen,YbFen)

END;

PROCEDURE VeVien;

BEGIN

Vien (White)

END;

PROCEDURE XoaVien;

BEGIN

Vien (Black)

END;

5. V a gic

Nu a gic c ta nguyn ta dng cng c DrawPoly ca Pascal v. Nu ta l s thc, ta s dng th tc DaGiac() vi cc tham s:

X,Y: bng cha cc ta a gic

Lim: s nh ca a gic

Mode: gi tr boolean ch th v a gic kn hay m

PROCEDURE DaGiac (X,Y : Table; Lim : Integer; Mode : Integer);

VAR I : Integer;

BEGIN

Diem(X[1],Y[1]);

FOR I := 2 TO Lim DO VeDen(X[I],Y[I]);

IF Mode = Dong THEN VeDen(X[1],Y[1]) {Net cuoi}

END;

PROCEDURE VeDaGiac (X,Y : Table; Lim : Integer; Mode : Integer);

BEGIN

SetColor(White);

DaGiac(X,Y,Lim,Mode)

END;

PROCEDURE XoaDaGiac(X,Y : Table; Lim : Integer; Mode : Integer);

BEGIN

SetColor(Black);

DaGiac(X,Y,Lim,Mode)

END;

5. V ng trn

Ta xp x ha ng trn bng mt a gic u c s cnh ln (72). Gi (XC,YC) l tm ng trn, R l bn knh. Gi Da l gc gia 2 nh lin tip, (Xn, Yn) l nh th n. C 2 cch tnh ta cc nh. Cch trc tip:

(

)

(

)

)

1

(

.

sin

.

.

cos

.

1

1

=

=

+

+

Da

n

R

Y

Da

n

R

X

n

n

Cch 2: ta nh th n l

(

)

(

)

=

=

a

R

Y

a

R

X

n

n

sin

.

cos

.

vi a l gc tm tng ng. Ta c

(

)

+

=

-

=

+

=

+

=

+

+

+

+

)

sin(

).

cos(

.

)

cos(

)

sin(

.

)

sin(

)

sin(

.

)

cos(

)

cos(

.

sin

.

)

cos(

.

1

1

1

1

Da

a

R

Da

a

R

Y

Da

a

R

Da

a

R

X

Da

a

R

Y

Da

a

R

X

n

n

n

n

cui cng ta c:

)

2

(

)

sin(

.

)

cos(

.

)

sin(

.

)

cos(

.

1

1

+

=

-

=

+

+

Da

X

Da

Y

Y

Da

Y

Da

X

X

n

n

n

n

n

n

Phng php (1) tn 2 php nhn v 2 php sin/cos cho mi nh. Phng php (2) tn 4 php nhn v 2 php (. Lu l my tnh phi dng cng thc Taylo tnh sin/cos

...

!

6

!

4

!

2

1

)

cos(

6

4

2

x

x

x

x

-

+

-

=

PROCEDURE VeTron (XC,YC,R : Real; Cham : Boolean);

VAR S,C,X,Y,Aux : Real;

N : Integer;

BEGIN

S := Sin(Pi/36);

{Da=Pi/36}

C := Cos(Pi/36);

X := XC+R;

Y := YC;

Diem(X,Y);

FOR N := 2 TO 73 DO

BEGIN

Aux := XC+(X-XC)*C-(Y-YC)*S;

Y := YC+(X-XC)*S+(Y-YC)*C;

X := Aux;

IF Cham THEN Diem(X,Y);

VeDen(X,Y)

END

END;

Sau y l mt s chng trnh ng dng th vin DOHOA v cc ng trong mt phng.

6. V hnh Bolygone

Xt ng trn n v (bn knh bng 1, tm gc ta ). Hnh Bolygone bc N gia s gc a l tp cc dy cung ni cc im sau:

im u

im cui

00

00

a0

(N.a)0

(2a)0

(N.2a)0

(3a)0

(N.3a)0

...

...

Phng trnh ng trn bn knh R, tm gc ta l:

X = R.Cos(()

Y=R.Sin(()

vi ng trn n v (R=1) ta c

X=cos(()

Y=sin(().

Khi chng trnh v Bolygone nh sau:

PROGRAM Bolygone;

USES Crt,Dohoa;

VAR Ordre, Pas : Integer;

ADeg,ARad : Real;

F1,F2,F3,F4 : Real;

C1,C2,C3,C4 : Integer;

PROCEDURE NhapSoLieu;

BEGIN

ClrScr;

Write ('G s nguyn ch bc (2,3,5 ...): g 0 kt thc');

Readln (Ordre);

Writeln;

IF Ordre 0 THEN

BEGIN

Write ('Cho gia s gc (1,3,5,7,11 ... ): ');

ReadLn (Pas);{

Write ('Cho toa do cua so (F1,F2,F3,F4): ');

ReadLn (F1,F2,F3,F4);

Write ('G ta tm nhn (C1,C2,C3,C4): ');

ReadLn (C1,C2,C3,C4);}

F1:=-1;F2:=1; F3:=-1;F4:=1;

C1:=100;C2:=540;C3:=20;C4:=460;

END

END;

PROCEDURE VeBolygone (Ordre,Pas : Integer);

BEGIN

ADeg := 0;

REPEAT

ARad := Pi*ADeg/180;

Diem (Cos(ARad),Sin(ARad));

VeDen (Cos(Ordre*ARad),Sin(Ordre*ARad));

ADeg := ADeg+Pas;

UNTIL ADeg > 360; {nu tng gii hn 360 ln, chng hn 3600, th s dy cung s tng ln}

END;

BEGIN

NhapSoLieu;

WHILE Ordre 0 DO

BEGIN

MhDohoa;

CuaSo (F1,F2,F3,F4);

TamNhin (C1,C2,C3,C4);

VeVien;

VeBolygone (Ordre,Pas);

Cho;

MhVanBan;

NhapSoLieu

END

END.

7. V cc ng Cycloide

nh ngha:

ng Cycloide l ng cong c v bi mt im ca vng trn ln khng trt trn mt ng thng. Phng trnh tham s ca cycloide l:

X=R.(T-sin(T))

Y=R.(1-cos(T))

ng Epicycloide l ng cong c v bi mt im ca vng trn ln khng trt bn ngoi mt vng trn c nh khc.

ng Hypocycloide l ng cong c v bi mt im ca vng trn ln khng trt bn trong mt vng trn c nh khc.

+

-

+

=

+

-

+

=

T

R

R

R

R

L

T

R

R

Y

T

R

R

R

R

L

T

R

R

X

2

2

1

2

2

1

2

2

1

2

2

1

sin

.

)

sin(

).

(

cos

.

)

cos(

).

(

Trong :

R1 l bn knh ng trn c nh

R2 l bn knh ng trn di ng

T: gc to bi trc Ox v ng ni tm ca vng trn di ng vi gc ta

L l tham bin

L>1: ng cong gin ra

L=1: ng cong bnh thng

L0 ta nhn c ng Epicycloide

Nu R2= 0;

aux1 := R1 + R2;

aux2 := (R1 + R2)/R2;

aux3 := L*R2;

Writeln;

Write ('Co ve duong tron sinh khong? (C/K) ');

Readln (Sinh)

END;

PROCEDURE Timcuaso;

BEGIN

rmax := 0;

IF L >= 1

THEN rmax := R1 + R2 + Abs(L*R2)

ELSE IF R2 > 0

THEN rmax := R1 + 2*R2

ELSE rmax := R1

END;

PROCEDURE Veduongcong;

VAR a,giaso : Real;

BEGIN

a := 0;

giaso := Pi/48;

Diem (Fx(0),Fy(0));

REPEAT

a := a+giaso;

VeDen (Fx(a),Fy(a))

UNTIL a >= chuky

END;

PROCEDURE Vongtronsinh;

BEGIN

Troncham (0,0,R1);

Troncham (R1+R2,0,R2)

END;

PROCEDURE Trinhbaythambien;

VAR s1,s2,s3,s4,s5 : string;

BEGIN

Str (R1:5:2,s1);

Str (R2:5:2,s2);

Str (L:5:2,s3);

Str (chuky:8:5,s4);

Str (rmax:8:5,s5);

Tamnhin (0,maxX,0,11);

OutTextXY (10,0,'R1 ='+s1+' R2 ='+s2+' L ='+s3

+' Chu ky ='+s4+' Rmax ='+s5)

END;

BEGIN

Nhapdulieu;

Timtudongchuky;

Timcuaso;

Mhdohoa;

Cuaso (-rmax,rmax,-rmax,rmax);

Tamnhin (0,maxX,0,maxY);

Vevien;

Tamnhin (140,580,15,345);

IF upcase (sinh) = 'C' THEN Vongtronsinh;

Veduongcong;

Trinhbaythambien;

Cho;

MhVanban

END.

7. Tng hp hai giao ng iu ha

Phng trnh tng qut ca giao ng iu ha l hm

Y=A.Sin(F.T)

trong A l bin , F l tn s, F.T l pha.

Ta s lp trnh v th hai giao ng

Y1=A1.sin(F1.T)

Y2=A2.sin(F2.T+D)

vi D l lch pha gia Y1 v Y2. Sau , trn cng mn hnh ta v th giao ng tng hp Y=Y1+Y2. Mn hnh c chia thnh 3 tm nhn dnh cho 3 ca s tng ng:

CuaSo(0,2Pi,-A1,A1) kho st giao ng th nht

CuaSo(0,2Pi,-A2,A2) kho st giao ng th hai

CuaSo(0,2Pi,-A1-A2,A1+A2) kho st giao ng tng hp

uses crt,Graph,dohoa;

const pas=0.02;

var f1,f2,a1,a2,D,B,P,X:real;

cy:integer; { b rng ca s 1,2 }

PROCEDURE NhapSolieu;

Begin

clrscr;

Writeln ('------------ TNG HP 2 GIAO NG ------------');

GotoXY(1,10); Write('Giao ng 1: bin , tn s');

readln(F1,A1); {c th th vi: 5,1}

GotoXY(1,14); Write('Giao ng 2: bin , tn s, lch pha (radian)');

readln(F2,A2,D); {c th th vi:: 3, 1, 3.14}

{th vi f1=f2, d=0: ( lch pha =0}

End;

FUNCTION Func1(X:real) : real;

Begin

Func1:=A1*sin(F1*x);

End;

FUNCTION Func2(X:real) : real;

Begin

Func2:=A2*sin(F2*x+D);

End;

FUNCTION FuncSum(X:real) : real;

Begin

FuncSum:=Func1(x)+Func2(x);

End;

PROCEDURE VeHam1;

Begin

Cuaso(0,2*pi,-A1,A1);

TamNhin(10,getmaxX-10,3*cy,4*cy);

Truc; DoDo(1,0);

x:=0;mausac(white);

Diem(x,Func1(x));

Repeat

x:=x+Pas;

Veden(x,func1(x));

Until x>=2*pi;

End;

PROCEDURE VeHam2;

Begin

Cuaso(0,2*pi,-A2,A2);

TamNhin(10,getmaxX-10,2*cy,3*cy);

Truc; DoDo(1,0);

x:=0;mausac(Green);

Diem(x,Func2(x));

Repeat

x:=x+Pas;

Veden(x,func2(x));

Until x>=2*pi;

End;

PROCEDURE VeHamTong;

Begin

Cuaso(0,2*pi,-A1-A2,A1+A2);

TamNhin(10,getmaxX-10,0,2*cy);

Truc; DoDo(1,0);

x:=0;mausac(Magenta);

Diem(x,FuncSum(x));

Repeat

x:=x+Pas;

Veden(x,FuncSum(x));

Until x>=2*pi;

End;

BEGIN

NhapSolieu; Mhdohoa;

cy:=getmaxY div 4;

Veham1; Cho;

Veham2; Cho;

VehamTong;Cho;

{ TamnhinDay;

Cho; }

Mhvanban;

END.

Chng V. Hnh hc Fractal

I. S cn thit ca hnh hc Fractal

Hnh hc l ngn ng c bit m phng t nhin, v hnh hc Euclide ng tr mt thi gian di trong lnh vc m t, x l cc hnh dng ca t nhin. Tuy nhin trong th gii thc c mt lp hnh dng khng d dng c m t bi hnh hc Euclide nh: ni, my, tri, bin ... c tnh ca nhng i tng ny l khi phng to mt phn chi tit no th s c c dng lp li ca ton hnh, c tnh c gi l t tng t (self- similarity). Hnh hc Fractal (vit tt ca Fractional phn on) ra i thch nghi vi vic m phng lp hnh dng : lp hnh c c tnh Fractal t tng t. (Xem v chy th file fractal.exe)

ng cong Fractal khng th c m t nh ng hai chiu thng thng, mt Fractal khng th m t nh mt 3 chiu m i tng Fractal c thm chiu hu t. Mc d cc i tng Fractal trong tng trng hp c th ch cha mt s hu hn chi tit, nhng n cha ng bn cht cho php m t v hn chi tit, tc l ti mt thi im xc nh th l hu hn, nhng xt v tng th l v hn v bn cht Fractal cho php phng i ln mt mc bt k mt chi tit ty .

Hin nay hnh hc Fractal v cc khi nim ca n tr thnh cng c trung tm trong cc lnh vc ca khoa hc t nhin nh: vt l, ha hc, sinh hc, a cht hc, kh tng hc, khoa hc vt liu ...

hiu th no l hnh hc Fractal, ta hy so snh vi hnh hc Euclide c in

Hnh hc Euclide

Hnh hc Fractal

1) Xut hin t rt lu, trn 2000 nm trc

1) Xut hin nm 1975 (nm nh ton hc Benoit Mandelbrot cng b cng trnh v tp Mandelbrot)

2) Vt th hnh hc Euclide c kch thc c trng

2) Khng c kch thc xc nh

3) Thch hp vi vic m t nhng thc th c to ra bi con ngi.

3) Thch hp m t nhng vt th trong t nhin

4) c m t bi cng thc (phng trnh tham s, phng trnh b mt, qu o ...)

4) c m t bi thut ton lp

Hnh hc Euclide cho s m t gn gng, chnh xc nhng vt th c to bi con ngi (khi lp phng, mt tr, mt cu ... ) nhng khng thch hp khi dng m t nhng hnh dng t nhin v i hi mt khi lng tnh ton (s v bc ca phng trnh, lng bin ... ) rt cng knh m vn khng chnh xc. Cn s m t ca hnh hc Fractal (cc thut lp) li c bit thch hp vi vic to sinh bng my tnh. Thc th Fractal l kt qu ca mt qu trnh lp theo mt thut ton xc nh, c to sinh l tng bng my tnh v rt kh c to mt cch th cng.

II Mt s khi nim c bn

Cc thc th Fractal c 3 c tnh quan trng:

T tng t (self-similarity)

T tng t a phn (statistical self-similarity)

T Affine

Chng ta ch kho st c tnh u tin v quan trng nht: c tnh t tng t (self-similarity)

Mt thc th c c tnh t tng t nu n l hp ca N tp con khng giao nhau, mi tp con c to sinh t tp gc qua cc php bin i nh: co dn, dch chuyn, quay.

Pht biu mt cch hnh thc hn, xt tp S gm nhng im:

x = (x1, x2, ... xE) trong khng gian E chiu

Di php ng dng vi h s co 0 < T < 1, tp S bin thnh tp TS vi nhng im:

Tx = (Tx1, Tx2, ... TxE)

Tp S l t tng t nu S l hp ca N tp con khng giao nhau, mi tp con tng ng vi TA (c th sai khc mt php tnh tin, quay hoc v t). Khi s chiu ca S c nh ngha bi

T

N

D

1

log

log

=

Tp S cng c gi l t tng t nu cc tp con c to sinh t tp gc theo cc h s co Ti khc nhau. Trong trng hp ny s chiu D c tnh t cng thc sau

1

1

=

=

N

i

D

i

T

III V d minh ha

Ta hy xt mt v d minh ha tnh t tng t ca mt thc th Fractal kinh in: ng Von-Koch. ng Von- Koch (cn gi l Bng hoa tuyt Von-Koch nh trong Wikipedia) l mt trong nhng ng Fractal c cng b sm nht, vo nm 1904 bi nh ton hc Thy in Helge Von Koch. Thut ton lp cho ng Von-Koch gm nhng bc sau:

a) Mt on thng cho trc c chia lm 3 phn bng nhau

b) on gia c thay bi 2 on c chiu di tng ng

c) Mi on trong s 4 on ny li c thay bi 4 on mi c chiu di bng 1/3 on trc

d) Qu trnh c th lp li

c im ca ng Von-Koch

ng cong ny c tnh t tng t, mi phn nh khi c phng to c th to sinh li ging nh phn ln hn, ni cch khc n bt bin di s phng to hnh.

Qua mi bc lp, di ng von-Koch tng ln 4/3 ln

ng cong (sau v hn bc) c di v hn mc d n ch chim mt phn din tch hu hn ca mt phng

Khng t ct

Thut ton to sinh ng Von-Koch kh n gin, nhng khng c cng thc i s xc nh nhng im trn ng cong

S chiu ca ng Von-Koch l hu t:

...

26

,

1

)

3

log(

)

4

log(

1

log

log

=

=

T

N

D

D phn nh mc lan ta ca ng cong. Khi D bin thin t 1 n 2, ng cong bin thin t ng thng lan dn n lp y mt phng hn.

S bc lp

di phn on

S phn on

Tng chiu di ng Koch

1

1

1

1.00

2

1/3

4

1.33

3

1/9

16

1.77

4

1/27

64

2.37

5

1/81

256

3.16

6

1/243

1024

4.21

...

...

...

...

10

1/19683

262144

13.31

25

1/2.82e+11

2.81e+14

996.62

50

1/2.39e+23

3.17e+29

1324335.72

100

1/1.71e+47

4.02e+59

2338486807656.00

Chng trnh v ng Von-Koch

{ V 3 ng Von Koch gip nhau to thnh hnh bng tuyt}

Uses crt,graph;

{ h s i t sang radian }

Const

RADS = 0.017453293;

Var

i,gd,gm:integer;

temp:real;

Procedure Koch(dir:integer; len:real; n:integer);

Begin

if (n>0) then

begin

Koch(dir, len / 3, n-1);

dir := dir + 60;

Koch(dir, len / 3, n-1);

dir := dir - 120;

Koch(dir, len / 3, n-1);

dir := dir + 60;

Koch(dir, len / 3, n-1);

end

else

linerel(round(len * cos(RADS * dir)), round(len * sin(RADS * dir)));

End;

Begin

gd:=detect;

initgraph(gd,gm,'');

for i:=1 to 4 do

begin

setcolor(White);

rectangle(0, 0, getmaxx, getmaxy);

moveto(100,350); Koch(0, 420 , i);

setcolor(blue); Koch(-120, 420 , i);

setcolor(yellow); Koch(120, 420 , i);

readln;

cleardevice;

end;

closegraph;

End.

ng Hilbert do nh ton ha c David Hilbert cng b nm 1891. di ca n ti bc lp th n l

n

n

n

L

2

1

2

-

=

tc l di tng theo hm m i vi n

Chng trnh v ng Hilbert

{V cc ng Hilbert}

Uses Crt,Graph;

Var

gd,gm,h:integer;

Procedure A (i:integer);FORWARD;

Procedure B (i:integer);FORWARD;

Procedure C (i:integer);FORWARD;

Procedure D (i:integer);FORWARD;

Procedure A(i:integer);

Begin

if (i>=0) then

Begin

D(i-1); linerel(-h, 0);

A(i-1); linerel(0, -h);

A(i-1); linerel(h, 0);

B(i-1);

End;

End;

Procedure B(i:integer);

Begin

if (i>=0) then

Begin

C(i-1); linerel(0, h);

B(i-1); linerel(h, 0);

B(i-1); linerel(0, -h);

A(i-1);

End;

End;

Procedure C(i:integer);

Begin

if (i>=0) then

Begin

B(i-1); linerel(h, 0);

C(i-1); linerel(0, h);

C(i-1); linerel(-h, 0);

D(i-1);

End;

End;

Procedure D(i:integer);

Begin

if (i>=0) then

Begin

A(i-1); linerel(0, -h);

D(i-1); linerel(-h, 0);

D(i-1); linerel(0, h);

C(i-1);

End;

End;

Procedure Hilbert;

Var

i:integer;

Begin

for i:=0 to 5 do

begin

h:= 30 - 5 * i;

moveto(getmaxx - 130, getmaxy - 50);

A(i);

readln; cleardevice;

end;

End;

Begin

gd:=detect;

initgraph(gd,gd,'');

setcolor(YELLOW);

rectangle(0, 0, getmaxx, getmaxy);

Hilbert;

closegraph;

End.

Chng trnh v Nhn s (Sphinx)

{ V con nhn s Sphinx }

Uses Crt,Graph;

{ h s i t sang radian }

Const

RADS = 0.017453293;

Var

curangle,curx, cury:real;

gd,gm:integer;

Procedure lineforward(angle, length:real);

Begin

curangle :=curangle+ angle;

curx := curx + length*cos(curangle*RADS);

cury := cury + length*sin(curangle*RADS);

lineto(round(curx), round(cury));

End;

Procedure moveforward(angle,length:real);

Begin

curangle := curangle + angle;

curx := curx + length*cos(curangle*RADS);

cury := cury + length*sin(curangle*RADS);

lineto(round(curx), round(cury));

End;

Procedure Sphinx(angle, length: real; level,leftright:integer);

Var

len4, len2, len1, oldx, oldy, oldangle: real;

Begin

if (leftright0) then

Begin

if (level = 0) then

begin

len1 := length / 3;

lineforward(angle, length);

lineforward(-120,len1*2);

lineforward(-120,len1);

lineforward(+60,len1);

lineforward(-60,len1);

end

else

begin

Sphinx(angle, length, 0, leftright);

len4 := length / 4;

Sphinx(240, len4, 0, 1);

moveforward(240, len4);

Sphinx(0, len4, 0, 1);

moveforward(240, len4);

Sphinx(0, len4, 0, 1);

moveforward(240, len4);

Sphinx(0, len4, 0, 1);

moveforward(240, len4);

moveforward(-120, len4*2/3);

Sphinx(0, len4, 0, 0);

moveforward(240, len4);

Sphinx(0, len4, 0, 0);

moveforward(-180, len4*2/3);

Sphinx(-120, len4, 0, 0);

moveforward(240, len4/3);

Sphinx(-240, len4, 0, 1);

moveforward(240, len4);

Sphinx(0, len4, 0, 1);

moveforward(240, len4);

Sphinx(-60, len4, 0, 0);

moveforward(-180, len4*2/3);

lineforward(-60, len4);

moveforward(60, len4/3);

moveforward(-120, len4);

Sphinx(-180, len4, 0, 0);

end;

end

else

begin

if (level = 0) then

begin

len1 := length / 3;

lineforward(angle, length);

lineforward(-120,len1);

lineforward(-60,len1);

lineforward(60,len1);

lineforward(-120,len1*2);

end

else

begin

Sphinx(angle, length, 0, leftright);

len4 := length / 4;

end;

end;

End;

Begin

curangle := 0.0;

gd:=detect;

initgraph(gd,gm,'');

moveto(10, 470);

curx := 10;

cury := 470;

Sphinx(0, 600, 1, 1);

readln;

closegraph;

End.

Chng trnh v Phong cnh (Fractal.exe)

Uses crt,graph;

Const

CLIP_ON = 1;

Var

n,c,t,mau:integer;

hs,go:real;

i,gd,gm:integer;

ch:char;

Function dau:integer;

Begin

if (random(2) = 0) then

dau:= -1

else

dau:= 1;

End;

Procedure cay(x,y:integer; h,g,gw:real; k:integer);

Var

x1,y1,i,j,d,leaf,c:integer;

dg,tt:real;

Begin

if (k > 0) then

for j:= 1 to (random(t) + t) do

begin

x1:= x + round(h * cos(g));

y1:= y + round(h * sin(g));

setcolor(DARKGRAY);

for i:= 0 to round((h/35)*(h/35)) do

begin

line(x + i, y, x1 + i, y1);

delay(10); {Ve cay cham de quan sat }

for d:= 1 to round((h/5)) do

begin

tt:= random(1);

putpixel(round((1-tt)*x+tt*x1+i),

round((1-tt)*y+tt*y1), LIGHTGRAY);

end;

end;

dg := gw/(2*n+1);

for i:= -n to n do

if (random(1000)*0.001 > 0.5) then

cay(x1,y1,h*(0.5+(random(1000)*0.001)/3),g+i*dg,gw*hs,k-1);

x := x1;

y := y1;

g := g + PI/18;

end

else

begin

setfillstyle(1,random(15));

setcolor(random(15));

for leaf:= 1 to 2 do

fillellipse(x+random(8)*dau,y+random(5)*dau,random(5)+2,random(2)+1);

for leaf:= 1 to 70 do

begin

case leaf of

0..20:

begin

putpixel(x+random(15)*dau,y+random(5)*dau,BLUE);

break;

end;

21..25:

begin

putpixel(x+random(15)*dau,y+random(5)*dau,LIGHTBLUE);

break;

end;

26..49:

begin

putpixel(x+random(15)*dau,y+random(5)*dau,LIGHTGREEN);

break;

end;

End;

End;

End;

End;

Procedure cloud(x,y:integer; Rx,Ry:real; k:integer);

Var

i:integer;

Begin

if (k > 0) then

for i:= 1 to 5 do

cloud(x+random(round(Rx)),y+random(round(Ry)),Rx*0.8,Ry*0.6,k-1)

else

for i:= 1 to round(sqrt(Rx*Ry)/3.5) do

putpixel(x+random(round(Rx)),y+random(round(Ry)),WHITE);

End;

Procedure phong;

Var

l,i:integer;

Begin

l := (getmaxy div 7) * 5;

mau:=random(15);

setfillstyle(1,mau);

bar(0,0,getmaxx,l);

setfillstyle(1,LIGHTGRAY);

bar(0,l,getmaxx,getmaxy);

for i:= 1 to 20000-1 do

case (random(8)) of

0..4:

begin

putpixel(random(getmaxx),l+random(getmaxy-l),GREEN);

break;

end;

5,6:

begin

putpixel(random(getmaxx),l+random(getmaxy-l),YELLOW);

break;

end;

7:

begin

putpixel(random(getmaxx),l+random(getmaxy-l),LIGHTRED);

break;

end;

end;

if (mauRED) then

Begin

if (mauBLACK) then

begin

setfillstyle(1,RED);

setcolor(RED);

end;

end

else

begin

setfillstyle(1,YELLOW);

setcolor(YELLOW);

end;

fillellipse(random(getmaxx div 2)+300,100,30,30);

for i:= 1 to 5 do

cloud(random(getmaxx),random(150)+10,random(60)+60,random(40)+20,5);

End;

BEGIN

randomize;

gd:=detect;

initgraph(gd,gm,'');

setviewport(0,0,getmaxx,getmaxy,CLIPON);

repeat

n := 1;

hs := 1.2;

go := PI /2.8;

t := 2;

phong;

cay(((getmaxx-100) div 5)+random(60),(getmaxy div 7)*6 +random(30)*dau,getmaxy div 6,-PI/2,go,5);

ch:=readkey;

until (ch=#27);

closegraph;

END.

Chng trnh v cy Pytago

{ Cy Pythagoras }

Uses Crt,Graph;

Const

{ 1 / sqrt(2) }

FCT = 0.7071067;

{ he so doi tu do sang radian }

RADS = 0.017453293;

Var

gd,gm:integer;

Procedure quadrat(x,y,a,angle:real);

Var

cp,sp:real;

Begin

setcolor(RED);

if (a < 35) then

setcolor(2);

if (a < 8) then

setcolor(7);

cp := a * cos(angle);

sp := a * sin(angle);

line(round(x), 200 - round(y), round(x + cp), 200 - round(y+sp));

line(round(x), 200 - round(y), round(x - cp), 200 - round(y+cp));

line(round(x+cp), 200 - round(y+sp), round(x - sp + cp), 200 - round(y+sp+cp));

line(round(x-sp), 200 - round(y+cp), round(x - sp + cp), 200 - round(y+sp+cp));

if (a > 2) then

Begin

quadrat(x - sp, y + cp, 3 * a / 5, angle + 0.93);

quadrat(x - sp + 3 * a / 5 * cos(angle + 0.93),

y + cp + 3 * a / 5 * sin (angle + 0.93), a * 4 / 5,

angle - 0.64);

End;

End;

Begin

gd:=detect;

initgraph(gd,gm,'');

setcolor(7);

quadrat(250, -120, 70, 0);

readln;

closegraph;

End.

Ca s

YhFen

F4

YbFen

F3

XdFen

F2

XgFen

F1

XgClot

C1

XdClot

C2

YbClot

C3

YhClot

C4

Tm nhn

Ca s

Tm nhn

F1

(Xr,Yr)

F3

F4

C1

C2

C3

C4

(Xe,Ye)

B

H

H

B

Ca s

Ca s

Tm nhn

Tm nhn

1001

1000

1010

0001

0101

Ca s

0000

0100

0010

0110

0110

0010

0100

0000

0101

0001

1010

1000

1001

a

b

m

n

j

f

g

e

c

d

h

i

2 trc khng ct ca s

2 trc u ct ca s: nguyn

trc Oy ct ca s: gi nguyn

trc Ox ct ca s: gi nguyn

V vch chia sai

V vch chia ng

C

A

B

dY

dX

Mo hnh: B/H ( B/H

Bolygone bc 184, gia s gc 10

Bolygone bc 192, gia s gc 10

00

200

400

600

800

1000

1200

1600

2000

Bolygone bc 2, gia s gc 200

a)

b)

c)

Quay 900 th nh nhau

C 4 quy tc (rules) thc cht ch l 1

1

5

4

3

2

1

tx=3; ty=1

tx=ty=3

Php t l

Php tnh tin trong mt phng

2

3

4

5

6

6

Php quay quanh mt im

1800

(1,3)

(3,3)

(3,1)

(1,1)

(4,1)

(6,1)

(10,3)

(12,3)

Php bin dng theo trc Ox, h s bin dng t =3

Php t l

Php tnh tin

z

x

y

y

x

z

z

x

y

y

z

x

x

z

y

Php quay quanh trc Oy

Php quay quanh trc Ox

Php quay quanh trc Oz

z

x

y

x

y

z

+

+

Xc nh chiu quay dng

(

PAGE

45

_1266074046.unknown

_1266136526.unknown

_1266222723.unknown

_1266237613.unknown

_1266257958.unknown

_1266335119.unknown

_1268375127.unknown

_1266258552.unknown

_1266245774.unknown

_1266223727.unknown

_1266223971.unknown

_1266237481.unknown

_1266222733.unknown

_1266171875.unknown

_1266173457.unknown

_1266152231.unknown

_1266075372.unknown

_1266075588.unknown

_1266135752.unknown

_1266075428.unknown

_1266075258.unknown

_1266075293.unknown

_1266075050.unknown

_1266072602.unknown

_1266073138.unknown

_1266073233.unknown

_1266072864.unknown

_1262426754.unknown

_1266071360.unknown

_1266071710.unknown

_1262427057.unknown

_1266070729.unknown

_1262426796.unknown

_1262426207.unknown

_1262426372.unknown

_1250153239.unknown

_1250232337.unknown

_1250251813.unknown

_1250153043.unknown