Chia sẻ luận văn, tiểu luận ngành kinh tế miễn phí
Nội quy chuyên mục: - Hiện nay có khá nhiều trang chia sẻ Tài liệu nhưng mất phí, đó là lý do ket-noi mở ra chuyên mục Tài liệu miễn phí.

- Ai có tài liệu gì hay, hãy đăng lên đây để chia sẻ với mọi người nhé! Bạn chia sẻ hôm nay, ngày mai mọi người sẽ chia sẻ với bạn!
Cách chia sẻ, Upload tài liệu trên ket-noi

- Những bạn nào tích cực chia sẻ tài liệu, sẽ được ưu tiên cung cấp tài liệu khi có yêu cầu.
Nhận download tài liệu miễn phí


Để Giúp ket-noi mở rộng kho tài liệu miễn phí, các bạn hảo tâm hãy Ủng hộ ket-noi
ket-noi sẽ dùng số tiền được ủng hộ để mua tài liệu chia sẻ với các bạn
By Hodei
#1027276

Download miễn phí Trình bày các kỹ thuật hình học phân hình thông qua sự khảo sát các cấu trúc Fractal cơ sở và thuật toán chi tiết để tạo nên các cấu trúc này





LỜI NÓI ĐẦU. 1

Chương I:SỰ RA ĐỜI VÀ CÁC KẾT QUẢ CỦA HÌNH HỌC PHÂN HÌNH. 5

 I.1 Sự ra đời của lý thuyết hình học phân hình 5

 Tính hỗn độn của các quá trình phát triển có quy luật trong tự nhiên 5

 Sự mở rộng khái niệm số chiều và độ đo trong lý thuyết hình học Eulide cổ điển 8

 I.2 Sự phát triển c ủa l ý thuyết hình học phân hình 9

 I.3 Các ứng dụng tổng quát của hình học phân hình 10

 Ứng dụng trong vấn đề tạo ảnh trên máy tính 11

 Ứng dụng trong công nghệ nén ảnh 11

 Ứng dụng trong khoa học cơ bản 13

 I.4 Các kiến thức cơ sở của hình học phân hình 13

 I.4.1 Độ đo Fractal 13

 I.4.2 Các hệ hàm lặp IFS 17

Chương II : MỘT SỐ KỸ THUẬT CÀI ĐẶT HÌNH HỌC PHÂN HÌNH. 21

 II.1 Họ đường Von Kock 21

 Đường hoa tuyết Von Kock-Nowflake 21

 Đường Von Kock-Gosper 26

 Đường Von Kock bậc hai 3-đoạn 28

 Đường Von Kock bậc hai 8-đoạn 30

 Đường Von Kock bậc hai 18-đoạn 32

 Đường Von Kock bậc hai 32-đoạn 33

 Đường Von Kock bậc hai 50-đoạn 35

 Generator phức tạp 38

 II.2 Họ đường Peano 44

 Đường Peano nguyên thuỷ 44

 Đường Peano cải tiến 45

 Tam giác Cesaro 49

 Tam giác Cesaro cải tiến 51

 Một dạng khác của đường Cesaro 54

 Tam giác Polya 56

 Đường Peano-Gosper 58

 Đường hoa tuyết Peano 7-đoạn 62

 Đường hoa tuyết Peano 13-đoạn 66

 II.3 Đường Sierpinski 70

 II.4 Cây Fractal 73

 Các cây thực tế 73

 Biểu diễn toán học của cây 73

 II.5 Phong cảnh Fractal 77

 II.6 Hệ thống hàm lặp (IFS) 84

 Các phép biến đổi Affine trong không gian R2 84

 IFS của các pháp biến đổi Affine trong không gian R2 85

 Giải thuật lặp ngẫu nhiên 86

 II.7 Tập Mandelbrot 88

 Đặt vấn đề 98

 Công thức toán học 88

 Thuật toán thể hiện tập Mandelbrot 89

 II.8 Tập Julia 94

 Đặt vấn đề 94

 Công thức toán học 94

 Thuật toán thể hiện tập Julia 95

 II.9 Họ các đường cong Phoenix 97

Chương III : GIỚI THIỆU VỀ NGÔN NGỮ CÀI ĐẶT VÀ KẾT QUẢ CHƯƠNG TRÌNH. 100

 III.1 Giới thiệu về ngôn ngữ cài đặt 100

 III.2 Kết quả chương trình 111

TÀI LIỆU THAM KHẢO 116

 

 

 

 

 

 

 

 

 

 

 





Để DOWNLOAD tài liệu, xin trả lời bài viết này, mình sẽ upload tài liệu cho bạn ngay.

Ketnooi - Kho tài liệu miễn phí lớn nhất của bạn


Ai cần tài liệu gì mà không tìm thấy ở Ketnooi, đăng yêu cầu down tại đây nhé:
Nhận download tài liệu miễn phí

Tóm tắt nội dung tài liệu:


urtle_Y, Turtle_R, Turtle_Theta);
Step(Turtle_X, Turtle_Y, Turtle_R, Turtle_Theta);
Step(Turtle_X, Turtle_Y, Turtle_R, Turtle_Theta);
else
Step(Turtle_X, Turtle_Y, Turtle_R, Turtle_Theta);
Turn(Angles[ I/2 ],Turtle_Theta);
XTemp = XPoints [NumLines -1];
YTemp = YPoints [NumLines -1];
for (I= 0 ; I<NumLines ;++I)
pDC->MoveTo((int)XPoints[ I ],(int)YPoints[ I ]);
pDC->LineTo((int)XPoints[ I+1 ],(int)YPoints[ I+1 ]);
delete[]XPoints;
delete[]YPoints;
Đối với Level > 1 thì hàm này giống như hàm –Generator của đường Peano gốc. Với Level = 1, thì hàm này có hơi khác một chút. Thay vì định nghĩa bước con rùa (là biến Turtle_R) bằng 1/3 chiều dài đoạn thẳng ban đầu thì ta định nghĩa nó bằng 1/18 chiều dài đoạn thẳng ban đầu, về cơ bản generator được viết sao cho con rùa vẫn đi qua con đường giống như generator của đường Peano gốc, sử dụng các góc quay giống nhau, nhưng dùng 6 bước thay vì 1 bước như generator của Peano gốc. Tuy nhiên, các điểm được lưu trữ trong các mảng toạ độ có thay đổi. Sau khi lưu trữ toạ độ thứ nhất, ta lưu trữ vị trí sau bước 5, vị trí kế tiếp được lưu trữ ở cuối bước 1 sau khi quay đi một góc đầu tiên. Các vị trí còn lại được lưu trữ sau bước 5 và sau bước đầu tiên của đoạn thẳng kế, ngoại trừ bước 5 của đoạn thẳng cuối cùng sẽ không được lưu trữ lại. Kết quả là khi các đoạn thẳng được vẽ, chúng sẽ tạo nên một đường xiên nối các điểm 1/6 khoảng cách trên mỗi đoạn thẳng gặp nhau ở góc. (Ở đây NumLines = 19).
□ TAM GIÁC CESARO:
Hình sau cho chúng ta xem một generator rất đơn giản (initiator là đoạn thẳng nằm ngang):
Generator chứa hai cạnh của một tam giác cân. Do đó, số đoạn thẳng là N=2 và chiều dài của mỗi đoạn là:
Giả sử đoạn thẳng ban đầu có chiều dài là 1. Khi đó số chiều fractal là:
Phụ thuộc vào các điều kiện cụ thể, generator này sẽ được đặt bên trái hay bên phải của mỗi đoạn thẳng mà nó thay thế. Nhiều đường cong khác nhau hoàn toàn có thể được sinh ra từ generator này. Các đường này được khám phá bởi Ernest Cesaro vào năm 1905.
Các hình sau là các mức khác nhau của tam giác Cesaro:
Mức thứ nhất
Mức thứ năm
Ở bất kỳ mức nào trong việc xây dựng đường này, generator luôn được đặt ở bên phải của mỗi đoạn thẳng ở mức đầu tiên, bên trái của mỗi đoạn thẳng ở mức thấp hơn kế tiếp, bên phải của mỗi đoạn thẳng ở mức thấp hơn kế tiếp nữa v.v…
Như vậy đoạn mã của hàm Generator có thêm mảng Sign để lúc quay theo các góc khác nhau, chúng ta nhân tương ứng với phần tử của mảng Sign được khởi động như sau:
for (I = Level; I >=0; --I )
{
Sign [ I ] = Sign1;
Sign1 = -1;
}
Với Sign1 có thể khởi động lúc đầu là 1 hay -1.
// Sau đây là Edit Code của đường cong Tam Giác Cesaro.
void CesaroTriangleGenerator(CDC *pDC,double X1, double Y1, double X2, double Y2, int Level,int NumLines, double LineLen, double Angles[],int Sign[])
double *XPoints ,*YPoints;
int I;
double Turtle_Theta,Turtle_X, Turtle_Y, Turtle_R;
XPoints = new double [NumLines + 1];
YPoints = new double [NumLines + 1];
--Level;
Turtle_R=sqrt((X2-X1)* (X2-X1)+ (Y2-Y1)* (Y2-Y1))*LineLen;
XPoints[0]= X1;
YPoints[0]= Y1;
XPoints[NumLinesv -1]= X2;
YPoints[NumLines -1]= Y2;
Turtle_Theta = Point(X1,Y1,X2,Y2);
Turtle_X=X1;
Turtle_Y=Y1;
for (I=NumLines ; I>=1 ;I-=2)
Step(Turtle_X, Turtle_Y, Turtle_R, Turtle_Theta);
XPoints[ I ]=Turtle_X;
YPoints[ I ]=Turtle_Y;
Turn(Angles[ I ]*Sign[Level],Turtle_Theta);
if (Level)
for ( I=0 ; I<NumLines -1 ;++I )
X1 = XPoints [ I ];
Y1 = YPoints [ I ];
X2 = XPoints [ I+1 ];
Y2 = YPoints [ I+1 ];
CesaroTriangleGenerator(pDC, X1, Y1, X2, Y2Level, NumLines, LineLen, Angles, Sign );
else
for ( I= 0; I<NumLines;++I )
pDC->MoveTo((int)XPoints[ I ],(int)YPoints[ I ]);
pDC->LineTo((int)XPoints[ I+1 ],(int)YPoints[ I+1 ]);
delete[]XPoints;
delete[]YPoints;
□ TAM GIÁC CESARO CẢI TIẾN:
Tam giác mô tả ở trên hơi khó để lần theo dấu vết vì đường rẽ theo góc 900 từ tâm của đoạn thẳng gốc thật sự đi lại theo vết của nó nhưng không thể quan sát được khi vẽ. Việc cập nhật đường cesaro có thể thực hiện bằng cách thay đổi góc generator từ 900 sang 850 đối với mức thấp nhất trước khi thực hiện quá trình vẽ.
Hình sau minh hoạ một generator (initiator là đoạn thẳng nằm ngang ).
Giống như đường Peano cải tiến, kết quả thu được là một đường cong mà số chiều fractal không hoàn toàn là 2, nhưng khi số lần đệ quy tiến ra vô cực thì số chiều fractal tiến về 2.
Hình sau cho chúng ta thấy mức thứ tư của tam giác Cesaro cải tiến:
Ta tính chiều dài mỗi đoạn của generator.
Giả sử chiều dài đoạn thẳng gốc là a
Ta có:
AE = a / 2
Đặt:
AC = b
CD = c
Ta có:

Ta có:
Đoạn mã của hàm –Generator như sau:
void ModifiedCesaroGenerator(CDC *pDC,double X1, double Y1, double X2, double Y2, int Level,int NumLines, double LineLen, double Angles[],int Sign[])
double *XPoints , *YPoints ;
int I;
double Turtle_Theta,Turtle_X, Turtle_Y, Turtle_R,Turtle_R1;
XPoints = new double [NumLines + 1];
YPoints = new double [NumLines + 1];
--Level;
Turtle_R1=sqrt((X2-X1)* (X2-X1)+ (Y2-Y1)* (Y2-Y1))*LineLen;
Turtle_R=Turtle_R1* 0.9128442;
XPoints [0]= X1;
YPoints [0]= Y1;
XPoints[NumLines -2]= X2 ;
YPoints[NumLines -2]= Y2 ;
Turtle_Theta = Point(X1,Y1,X2,Y2);
Turtle_X=X1;
Turtle_Y=Y1;
for (I=NumLines -1; I >=1; I-=2)
Step(Turtle_X, Turtle_Y, Turtle_R, Turtle_Theta);
XPoints[ I ]=Turtle_X;
YPoints[ I ]=Turtle_Y;
Turn(Angles[ I ]* Sign[Level],Turtle_Theta);
if (I= =NumLines - 1)
Turtle_R=Turtle_R1;
Step(Turtle_X, Turtle_Y, Turtle_R, Turtle_Theta);
XPoints[NumLines ]=Turtle_X;
YPoints[NumLines ]=Turtle_Y;
Turn(Angles[NumLines ]* Sign[Level],Turtle_Theta);
if (Level)
for (I= 0; I<NumLines - 2; ++I)
X1 = XPoints [ I ];
Y1 = YPoints [ I ];
X2 = XPoints [ I+1 ];
Y2 = YPoints [ I+1 ];
ModifiedCesaroGenerator(pDC, X1, Y1, X2, Y2,Level,NumLines, LineLen, Angles,Sign);
else
for (I= 0; I<NumLines -2; ++I)
pDC->MoveTo((int)XPoints[ I ],(int)YPoints[ I ]);
pDC->LineTo((int)XPoints[ I+3 ],(int)YPoints[ I+3 ]);
for (I= 1; I<NumLines -1; ++I)
pDC->MoveTo((int)XPoints[ I ],(int)YPoints[ I ]);
pDC->LineTo((int)XPoints[ I+2 ],(int)YPoints[ I+2 ]);
delete[]XPoints;
delete[]YPoints;
Hàm này giống với hàm trong đường Cesaro gốc nhưng lúc này mảng Angle là {0, -170, 0, 85, 0 } và NumLines = 4, đồng thời chiều dài các đoạn của generator có khác nhau. Chúng chia làm hai loại:
Loại chiều dài thứ nhất: Bằng nửa chiều dài của đoạn thẳng ban đầu.
Loại chiều dài thứ hai: Bằng nửa chiều dài của đoạn ban đầu nhân với 0.9128442.
□ MỘT DẠNG KHÁC CỦA ĐƯỜNG CESARO:
Giả sử chúng ta bắt đầu với đường generator và hai mức đầu tiên như ở đường Cesaro, nhưng sử dụng sự sắp xếp khác đi khi đặt generator về phía bên trái và phải của đoạn thẳng gốc khi chúng ta ở mức cao hơn. Kết quả là nhiều đường khác nhau có thể được sinh ra từ cách sắp xếp này.
Hình sau cho chúng ta mức khác nhau của hình Cesaro này:
Đoạn mã của hàm –Generator như sau:
void OtherCesaroGenerator(CDC *pDC,double X1, double Y1, double X2, double Y2, int Level,int NumLines,
double LineLen, double Angles[],int Sign)
double *XPoints ,*YPoints;
int I;
double Turtle_Theta,Turtle_X, Turtle_Y, Turtle_R;
XPoints = new double [NumLines + 1];
YPoints = new double [NumLines + 1];
--Level;
Turtle_R=sqrt((X2-X1)* (X2-X1)+ (Y2-Y1)* (Y2-Y1))*LineLen;
XPoints[0]= X1;
YPoints[0]= Y1;
XPoints[NumLinesv -1]= X2;
YPoints[NumLines -1]= Y2;
Turtle_Theta = Point(X1,Y1,X2,Y2);
Turtle_X=X1;
Turtle_Y=Y1;
for (I=NumLines; I>=1; I-=2)
Step(Turtle_X, Turtle_Y, Turtle_R, Turtle_Theta);
XPoints[ I ]=Turtle_X;
YPoints[ I ]=Turtle_Y;
Turn(Angles[ I ]*Sign,Turtle_Theta);
Sign= -1;
if (Level)
for(I=0; I<NumLines -1; ++I)
X1 = XPoints [ I ];
Y1 = YPoints [ I ]; ...

Lưu ý khi sử dụng

- Gặp Link download hỏng, hãy đăng trả lời (yêu cầu link download mới), Các MOD sẽ cập nhật link sớm nhất
- Tìm kiếm trước khi đăng bài mới

Chủ đề liên quan:
Kết nối đề xuất:
Learn Synonym
Advertisement