Nghiên cứu về hình học Fractal - Viết chương trình cài đặt

116 436 0
Nghiên cứu về hình học Fractal - Viết chương trình cài đặt

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

http://kilobooks.com THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN ĐỒ ÁN TỐT NGHIỆP SVTH: Nguyễn Ngọc Hùng Cường LỜI NĨI ĐẦU OBO OK S CO M Trong năm gần đây, tốn học khoa học tự nhiên bước lên bậc thềm mới, mở rộng sáng tạo khoa học trở nghiệm liên ngành Cho đến đưa khoa học tiến bước dài Hình học phân hình đơng đảo người ý thích thú nghiên cứu Với người quan sát tình cờ màu sắc cấu trúc phân hình sở vẽ đẹp chúng tạo nên lơi hình thức nhiều lần so với đối tượng tốn học biết đến Hình học phân hình cung cấp cho nhà khoa học mơi trường phong phú cho thám hiểm mơ hình hố tính phức tạp tự nhiên Những ngun nhân lơi hình học phân hình tạo chỉnh sửa khái niệm lỗi thời giới thực thơng qua tập hợp tranh mạnh mẽ KIL Những thành cơng to lớn lĩnh vực khoa học tự nhiên kỹ thuật dẫn đến ảo tưởng giới hoạt động chế đồng hồ vĩ đại, quy luật phải chờ đợi để giải mã bước Một quy luật biết, người ta tin tiến hố phát triển vật dự đốn trước xác nhiều, mặt ngun tắc Những bước phát triển ngoạn mục đầy lơi lĩnh vực kỹ thuật máy tính hứa hẹn cho việc điều khiển thơng tin nhiều làm gia tăng hy vọng nhiều người máy móc có máy móc tương lai Nhưng ngày người ta biết xác dựa cốt lỗi khoa học đại khả xem xét tính xác phát triển tương lai khơng đạt Một kết luận thu từ lý thuyết non trẻ : xác định có tính nghiêm túc với phát triển có tính ngẫu nhiên khơng khơng có loại trừ lẫn mà chúng tồn quy luật tự nhiên Hình học phân hình lý thuyết hỗn độn xác định kết luận Khi xét đến phát triển tiến trình khoảng thời gian, sử dụng thuật ngữ lý thuyết hỗn độn, quan tâm nhiều đến dạng có cấu trúc mà tiến trình hỗn độn để lại đường nó, dùng thuật ngữ hình học phân hình mơn hình học cho phép “sắp xếp thứ tự” hỗn độn Trong ngữ cảnh hình học phân hình ngơn ngữ để mơ tả, mơ hình hố phân tích dạng phức tạp tìm thấy tự nhiên Nhưng phần tử ngơn ngữ truyền thống (Hình học Euclide) dạng hiển thị đoạn thẳng, đường tròn hình cầu hình học phân hình thuật tốn biến đổi thành dạng cấu trúc nhờ máy tính Việc nghiên cứu ngơn ngữ hình học tự nhiên mở nhiều hướng cho khoa học ứng dụng Trong đề tài thực nghiên cứu phần nhỏ hình học phân hình ứng dụng Nội dung đề tài gồm có ba chương trình bày sau: Đề tài : Hình học Fractal Trang http://kilobooks.com ĐỒ ÁN TỐT NGHIỆP THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN SVTH: Nguyễn Ngọc Hùng Cường Chương I: Trình bày kiến thức tổng quan lịch sử hình học phân hình, kết sở lý thuyết KIL OBO OKS CO M Chương II: Trình bày kỹ thuật hình học phân hình thơng qua khảo sát cấu trúc Fractal sở thuật tốn chi tiết để tạo nên cấu trúc Chương III: Kết cài đặt chương trình vẽ số đường mặt fractal hiệu ứng Nhân đây, em xin chân thành cảm ơn thầy T.S Huỳnh Quyết Thắng tận tình hướng dẫn, dạy giúp đỡ em suốt thời gian thực đề tài nghiên cứu Em xin chân thành cảm ơn q thầy khoa cơng nghệ thơng tin tận tình giảng dạy, trang bị cho chúng em kiến thức cần thiết suốt q trình học tập, em xin gởi lòng biết ơn đến gia đình, cha, mẹ, bạn bè ủng hộ, giúp đỡ động viên em lúc khó khăn Đề tài thực thời gian tương đối ngắn, nên dù cố gắng hồn thành đề tài chắn khơng thể tránh khỏi thiếu sót định Rất mong nhận thơng cảm đóng góp ý kiến vơ q báu Thầy Cơ, bạn bè, nhằm tạo tiền đề thuận lợi cho việc phát triển đề tài tương lai Sinh viên thực Nguyễn Ngọc Hùng Cường Đề tài : Hình học Fractal Trang http://kilobooks.com ĐỒ ÁN TỐT NGHIỆP THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN SVTH: Nguyễn Ngọc Hùng Cường MỤC LỤC KIL OBO OKS CO M Trang LỜI NĨI ĐẦU Chương I:SỰ RA ĐỜI VÀ CÁC KẾT QUẢ CỦA HÌNH HỌC PHÂN HÌNH I.1 Sự đời lý thuyết hình học phân hình Tính hỗn độn q trình phát triển có quy luật tự nhiên Sự mở rộng khái niệm số chiều độ đo lý thuyết hình học Eulide cổ điển I.2 Sự phát triển c l ý thuyết hình học phân hình I.3 Các ứng dụng tổng qt hình học phân hình 10 Ứng dụng vấn đề tạo ảnh máy tính 11 Ứng dụng cơng nghệ nén ảnh 11 Ứng dụng khoa học 13 I.4 Các kiến thức sở 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 ngun 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 đườ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 thực tế 73 Biểu diễn tốn học 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 khơng gian R2 84 Đề tài : Hình học Fractal Trang http://kilobooks.com ĐỒ ÁN TỐT NGHIỆP THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN SVTH: Nguyễn Ngọc Hùng Cường KIL OBO OKS CO M IFS pháp biến đổi Affine 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 tốn học 88 Thuật tốn thể tập Mandelbrot 89 II.8 Tập Julia 94 Đặt vấn đề 94 Cơng thức tốn học 94 Thuật tốn thể tập Julia 95 II.9 Họ đườ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 ngơn ngữ cài đặt 100 III.2 Kết chương trình 111 TÀI LIỆU THAM KHẢO 116 Đề tài : Hình học Fractal Trang http://kilobooks.com ĐỒ ÁN TỐT NGHIỆP THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN SVTH: Nguyễn Ngọc Hùng Cường CHƯƠNG I: SỰ RA ĐỜI VÀ CÁC KẾT QUẢ CỦA HÌNH HỌC PHÂN HÌNH KIL OBO OKS CO M I.1 SỰ RA ĐỜI CỦA LÝ THUYẾT HÌNH HỌC PHÂN HÌNH: Sự đời lý thuyết hình học phân hình kết nhiều thập kỷ nổ lực giải vấn đề nan giải nhiều ngành khoa học xác, đặc biệt vật lý tốn học Một cách cụ thể, lý thuyết hình học phân hình xây dựng dựa vấn đề lớn quan tâm thập niên đầu kỷ 20 Các vấn đề bao gồm: ♦ Tính hỗn độn q trình phát triển có quy lực tự nhiên ♦ Sự mở rộng khái niệm số chiều độ đo lý thuyết hình học Euclide cổ điển □ TÍNH HỖN ĐỘN CỦA CÁC Q TRÌNH PHÁT TRIỂN CĨ QUY LUẬT TRONG TỰ NHIÊN: Các cơng thức lặp có dạng: Xn+1=f(Xn) thường sử dụng ngành khoa học xác để mơ tả q trình lặp lặp lại có tính xác định Các q trình xác định cơng thức trên, f thể mối liên hệ phi tuyến hai trạng thái nối tiếp Xn Xn+1, quan tâm đặc biệt Các khảo sát thập niên gần phát cư xử kỳ dị tiến trình lặp Khảo sát chi tiết nhà khí tượng học Edward N Lorenz tiến hành vào năm 1961 nghiên cứu hệ tốn học mơ dự báo thời tiết Về mặt lý thuyết, hệ cho kết dự đốn xác thời tiết khoảng thời gian dài Tuy nhiên, theo Lorenz quan sát, bắt đầu tính tốn lại dựa vào liệu cho hệ thời điểm tiếp sau khơng giống với kết dự đốn ban đầu Hơn sai số tính tốn tăng lên nhanh chóng theo thời gian Điều dẫn đến kết luận tiến trình dự đốn lại từ thời điểm tiến trình dự báo, khoảng thời gian để kết dự báo xác bị thu hẹp lại tức khơng thể dự báo xác thời tiết khoảng thời gian lớn Vấn đề Lorenz tìm thấy ngày gọi diện tính chất hỗn độn tiến trình lặp xác định Tiếp theo sau phát Lorenz, vào năm 1976 Robert May viết với tựa đề “Các mơ hình tốn học đơn giản với hệ động lực phức tạp” đề cập đến vấn đề tương tự Đó hỗn độn q trình phát triển dân số tự nhiên, vốn xem xác định rõ ràng chi tiết nhờ mơ hình dân số Verhulst xây dựng Nếu ký hiệu: Đề tài : Hình học Fractal Trang http://kilobooks.com THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN ĐỒ ÁN TỐT NGHIỆP - R tốc độ gia tăng dân số năm Po lượng dân số khởi điểm (của quốc gia, thành phố,…) Pn lượng dân số có sau n năm phát triển Ta có quan hệ sau: KIL OBO OKS CO M - SVTH: Nguyễn Ngọc Hùng Cường Pn+1 - Pn , ∀n > (1) R= Pn Để ý dân số phát triển đều, tức R khơng đổi từ năm sang năm khác, từ (1) ta có: Pn+1 = f(Pn) = (1+R)Pn Do sau n năm, lượng dân số khảo sát là: Pn = (1+R)n Po Cơng thức gia tăng dân số theo hàm mũ điều khơng thực tế Vì Verhulst đề nghị R thay đổi với lượng dân số khảo sát Một cách cụ thể, Verhust cho R tỉ lệ với tốc độ phát triển dân số theo mơi trường (P-Pn) / N Trong N lượng dân số tối đa có ứng với điều kiện mơi trường cho trước Như biểu diễn R dạng: N - Pn R=r (2) N Với r hệ số tỷ lệ gọi tham số phát triển theo mơi trường Từ (1) (2) suy ra: Pn+1 - Pn N - Pn =r N Pn Do đó: Pn+1 - Pn N Pn = r Pn N N Đặt: Pk = Pk N Pn+1 - Pn Pn Đề tài : Hình học Fractal ta có: = r(1 - Pn) Trang http://kilobooks.com ĐỒ ÁN TỐT NGHIỆP THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN SVTH: Nguyễn Ngọc Hùng Cường - KIL OBO OKS CO M Suy ra: Pn+1 = Pn + rPn(1 – Pn) Phương trình gọi phương trình dân số Verhust Rõ ràng phương trình xác định đơn giản Do đó, kể từ đưa người ta áp dụng mà khơng nghi ngờ tính ổn định Tuy nhiên May khảo sát phương trình với r thay đổi phạm vi lớn, ơng khám phá bất ổn định tỉ lệ phát triển dân số theo mơi trường Pk Các kết quan sát chi tiết cho thấy số lần lặp n trở nên lớn ta có trường hợp sau: - Với < r < 2: Dãy (Pn) tiến đến 1, tức phát triển dân số đạt mức tối đa - Với < r < 2,449: Dãy (Pn) dao động tuần hồn hai giá trị, tức phát triển dân số biến động hai mức xác định Hình vẽ (I.1) minh hoạ cho trường hợp r = 2.3 Po Dân số: Thời gian Hình vẽ I.1 với r = 2.3 P0 = 0.01 Với 2,449 < r < 2,570: Dãy (Pn) dao động ổn định với giá trị lặp lại theo chu kỳ nhân đơi giá trị r chạy từ 2,449 đến 2,570 Hình vẽ (I.2) minh hoạ trường hợp r = 2,5 dao động có chu kỳ Dân số: Thời gian - Hình vẽ I.2 với r = 2.5 Với r > 2.570: Dãy (Pn) khơng tuần hồn mà trở nên hỗn độn, theo nghĩa giá trị dãy chọn cách hồn tồn xác định khơng dự đốn xác Hình vẽ (I.3) minh hoạ trường hợp r = 3.0 Po = 0.1 Đề tài : Hình học Fractal Trang http://kilobooks.com THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN ĐỒ ÁN TỐT NGHIỆP SVTH: Nguyễn Ngọc Hùng Cường KIL OBO OKS CO M Dân số Thời gian Hình vẽ I.3 với r = 3.0 Po = 0.1 Một kết lý thuyết chứng minh Jame York Tiên Yien Li viết ”Các chu kỳ chứa đựng hỗn độn” vào tháng 12/1975 York Li hàm số xác định tương tự phương trình dân số có chu kỳ tuần hồn có chu kỳ tuần hồn n, với n số tự nhiên khác Điều dẫn đến kiện vơ số tập giá trị tuần hồn khác sản sinh loại phương trình Vào năm 1976, Mitchell Feigenbaum nghiên cứu phương trình cách độc lập với May York Feigenbaum xét phương trình dân số dạng đơn giản: y = x(1- x) thể sơ đồ phân nhánh Nếu gọi rn giá trị tham số phát triển theo mơi trường mơ hình Verhulst lần rẻ nhánh thứ n (là lúc ứng với rn đó, chu kỳ 2n trở nên khơng ổn định chu kỳ 2n+1 đạt ổn định), tỷ số khoảng liên tiếp δn xác định bởi: δn = rn - rn-1 rn+1 - rn Sẽ tiến giá trị δ = 4.669 n→∞ Tính chất tìm thấy tiến trình có chu kỳ nhân đơi khác với tiến trình Verhulst Do giá trị ngày gọi số phổ dụng Feigenbaum (trong lý thuyết hỗn độn) □ 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: Vào năm 1890 & 1891, tìm kiếm đặc trưng bất biến đối tượng hình học qua phép biến đổi đồng phơi lý thuyết topo, nhà tốn học Peano & Hilbert phát minh đường cong có tính chất đặc biệt Đó đường cong khơng tự cắt theo quy luật Peano Hilbert, chúng lấp đầy miền hữu hạn mặt phẳng Hình học Euclide cổ điển quan niệm đường cong Đề tài : Hình học Fractal Trang http://kilobooks.com ĐỒ ÁN TỐT NGHIỆP THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN SVTH: Nguyễn Ngọc Hùng Cường KIL OBO OKS CO M đối tượng chiều đường thẳng Tuy nhiên trực quan cho thấy cách nhìn số chiều gò bó Do người ta bắt đầu nghĩ đến phân lớp mới, đường có số chiều đại diện đường thẳng, đối tượng hai chiều đại diện mặt phẳng, đường cong lấp đầy mặt phẳng đại diện cho đối tượng có số chiều Ý tưởng cách mạng dẫn đến việc hình thành giải tốn số chiều hữu tỷ gây nhiều tranh luận tốn học thập kỷ gần Tiếp sau đó, vào năm 1904 nhà tốn học Thụy Điển Helge Koch đưa loại đường cong khác với đường cong Peano Hilbert Các đường cong Von Koch khơng lấp đầy mặt phẳng lại có độ dài thay đổi cách vơ hạn chúng chứa miền hữu hạn Những đường cong có nhiều tự nhiên, ví dụ đường bờ biển, đường biên bơng hoa tuyết, đám mây, vv… Tất vả đường cong tính chất đặc trưng đồng dạng Nó biểu giống phần nhỏ đường cong phóng lớn với phần khác lớn đường cong Tính chất giữ vị trí quan trọng việc hình thành nên dạng cấu trúc vơ phức tạp tự nhiên, vào thời Von Koch lại hiểu biết sơ lược Chỉ với giúp đỡ máy tính điện tử, chất tính đồng dạng nghiên cứu đầy đủ chi tiết tác phẩm “Hình học phân hình tự nhiên” Benoit B Mandelbrot xuất năm 1982 Trong tác phẩm mình, Mandelbrot phân rã dạng cấu trúc phức tạp tự nhiên thành thành phần gọi fractal Các fractal chứa đựng hình dáng tự đồng dạng với nhiều kích thước khác Mandelbrot tạo nên tranh fractal trừu tượng nhận thấy đằng sau đối tượng tự nhiên đám mây, dãy núi, khu rừng, vv… cấu trúc tốn học tương tự Chúng có khuynh hướng hài hồ màu sắc cân đối hình thể Ngồi Mandelbrot thiết lập cách xác định số chiều độ dài dạng fractal sở Chính với định nghĩa số chiều này, tốn số chiều khơng ngun giải cách hồn chỉnh Có thể nói cơng trình Benoit B.Mandelbrot thức khai sinh lý thuyết hình học phân hình sau nửa kỷ nghiên cứu liên tục I.2 SỰ PHÁT TRIỂN CỦA LÝ THUYỂT HÌNH HỌC PHÂN HÌNH: Kể từ đời cách thức vào năm 1982 nay, lý thuyết hình học phân hình học phân hình phát triển cách nhanh chóng Sau đặt móng cho lý thuyết phân hình, Mandelbrot với nhà tốn học khác A Douady J.Hubbard phát triển lý thuyết mặt fractal Các kết đạt chủ yếu tập trung tính chất cấu trúc fractal sở tập Mandelbrot tập Julia Ngồi nghiên cứu cố gắng tìm kiếm mối liên hệ cấu trúc này, ví dụ mối liên hệ tập Mandelbrot Julia Đề tài : Hình học Fractal Trang http://kilobooks.com ĐỒ ÁN TỐT NGHIỆP THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN SVTH: Nguyễn Ngọc Hùng Cường KIL OBO OKS CO M Dựa cơng trình Mandelbrot (trong năm 1976, 1979, 1982) Hutchinson (1981), vào năm 1986, 1988 Michael F.Barnsley M.Begger phát triển lý thuyết biểu diễn đối tượng tự nhiên dựa sở lý thuyết hệ hàm lặp IFS Các hệ hàm lặp bao gồm hữu hạn phép biến đổi affine cho phép với giúp đỡ máy tính tạo nên hình ảnh đối tượng tự nhiên Theo lý thuyết hình học Euclide cổ điển có hiệu lực việc biểu diễn đối tượng nhân tạo tồ nhà, cổ máy lại hồn tồn khơng thích hợp cho việc biểu diễn đối tượng giới thực đòi hỏi lượng q lớn đặc tả cần có Nếu hình học Euclide yếu tố sở đường thẳng, đường tròn, hình vng,… lý thuyết IFS mở rộng hình học cổ điển với yếu tố sở vơ số thuật tốn để vẽ nên fractal tự nhiên Ngồi cơng trình có tính chất lý thuyết, hình học phân hình bổ sung nhiều nghiên cứu ứng dụng lý thuyết vào khoa học máy tính khoa học xác khác, ví dụ dựa lý thuyết IFS, Barnsley phát triển lý thuyết biến đổi phân hình áp dụng vào cơng nghệ nén ảnh tự động máy tính, lĩnh vực đòi hỏi kỹ thuật tiên tiến tin học đại Hiện nhiều vấn đề, lý thuyết phân hình tiếp tục nghiên cứu Một vấn đề lớn quan tâm tốn độ đo đa phân hình (multifractal measurement) có liên quan đến mở rộng khái niệm số chiều fractal với đối tượng fractal tự nhiên, đồng thời liên quan đến việc áp dụng độ đo fractal ngành khoa học tự nhiên I.3 CÁC ỨNG DỤNG TỔNG QT CỦA HÌNH HỌC PHÂN HÌNH: Hiện có hướng ứng dụng lớn lý thuyết hình học phân hình, bao gồm: ▪ Ứng dụng vấn đề tạo ảnh máy tính ▪ Ứng dụng cơng nghệ nén ảnh ▪ Ứng dụng nghiên cứu khoa học □ ỨNG DỤNG TRONG VẤN ĐỀ TẠO ẢNH TRÊN MÁY TÍNH: Cùng với phát triển vượt bậc máy tính cá nhân năm gần đây, cơng nghệ giải trí máy tính bao gồm lĩnh vực trò chơi, anmation video… nhanh chóng đạt đỉnh cao Cơng nghệ đòi hỏi mơ tả hình ảnh máy PC với phong phú chi tiết màu sắc với tốn lớn thời gian cơng sức Gánh nặng giảm nhẹ đáng kể nhờ mơ tả đơn giản đầy đủ lý thuyết fractal đối tượng tự nhiên Với hình học phân hình khoa học máy tính có tay cơng cụ mơ tả tự nhiên vơ mạnh mẽ Đề tài : Hình học Fractal Trang 10 http://kilobooks.com THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN ĐỒ ÁN TỐT NGHIỆP SVTH: Nguyễn Ngọc Hùng Cường { KIL OBO OKS CO M CclientDC dc (this); dc.FloodFill(x, y, color); ♦ Tạo đường vẽ: Để tạo đường vẽ ta xét đến hàm createPen lớp Cpen hàm có dạng sau: Cpen *pPen = new Cpen; pPen → CreatePen (typeline, width, color); Trong : typeline kiểu đường vẽ có giá trị định nghĩa sau: PS-SOLID : Đường thẳng đồng PS-DASH : Đường thẳng gồm gạch ngang đứt nét PS-DOT : Đường thẳng gồm nét chấm đứt PS-DASHDOT : Đường thẳng gồm gạch ngang chấm đứt PS-NULL : Đường thẳng vơ hiệu lực khơng vẽ PS-INSIDEFRAME : Đường thẳng nằm bên đường viền Tham số width cho ta độ rộng nét vẽ tính pixel Tham số color cho ta màu vẽ Một số hàm sử dụng chương trình: Giới thiệu số hàm sử dụng chương trình: ♦ Hàm Point (X1, Y1, X2, Y2): Hàm tính góc rùa trục x (tức tính góc đoạn thẳng có hai đầu mút có toạ độ (X1, Y1) (X2, Y2) ) theo độ đo góc thơng thường Sau đoạn mã mơ tả cách cài đặt hàm: /* EDIT CODE */ #include”stdafx.h” #include”math.h” #define PI 3.141593 double Point(double X1, double Y1, double X2, double Y2) double Theta,Temp=180/PI; if((X2-X1)= = 0) if(Y2 > Y1) Theta= 90; else Theta = 270; else Theta= atan((Y2 -Y1) / (X2 -X1)) * Temp; if (X1 > X2) Theta += 180; return Theta; } ♦ Hàm Turn (Angle, Turtle-Theta): Hàm cộng thêm vào Turtle-Theta góc Angle (tức quay rùa góc theo chiều ngược chiều kim đồng hồ Angle > 0, Đề tài : Hình học Fractal Trang 102 http://kilobooks.com THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN ĐỒ ÁN TỐT NGHIỆP SVTH: Nguyễn Ngọc Hùng Cường Angle < quay chiều kim đồng hồ) Đoạn mã sau minh hoạ cách cài đặt: void Turn(double Angle, double &Turtle_Theta) } Turtle_Theta+=Angle; KIL OBO OKS CO M { ♦ Hàm Step (Turtle-X, Turtle-Y, Turtle-R, Turtle-Theta): Hàm di chuyển rùa bước Chiều dài bước Turtle-R Ở hàm sử dụng vị trí rùa có toạ độ (Turtle-X, TurtleY) góc định hướng Turle-Theta để xác định vị trí toạ độ sau di chuyển bước Đoạn mã sau minh hoạ cho cách cài đặt: void Step(double &Turtle_X, double &Turtle_Y, double Turtle_R, double Turtle_Theta) { } Double Temp=PI/180; Turtle_X+=Turtle_R*cos(Turtle_Theta* Temp); Turtle_Y+=Turtle_R*sin(Turtle_Theta* Temp); Giả sử initiator gồm N điểm, điểm có toạ độ (x[i], y[i] ) đường hoa tuyết có mức Level (mức bắt đầu 1), việc tạo đường hoa tuyết sau (các đường sau tạo giống vậy): For(i= ; i< N ;++i) -Generator(x[i],y[i],x[i+1],y[i+1],Level); Với hàm –Generator tương ứng với đoạn mã sau: ♦Hàm phát sinh họ đường Vonkock: void Generator(CDC *pDC,double X1, double Y1, double X2, double Y2, int Level,int NumLines,double LineLen,double Angles[]) Hàm áp dụng cho việc phát sinh đường khác họ ♦Hàm phát sinh họ đường Von Kock Generator phức tạp: void ComplexVonKockGenerator( CDC *pDC,double X1,double Y1[],double X2,double Y2,int Level,int Type,int Sign, int NumLines, double LineLen,double Angles[]) Hàm có thêm hai tham số Sign Type Sygn dùng để nhân với góc quay Nếu Type = khơng có thay đổi, tham số Sign trì giá trị củ generator sinh bên generator trước Khi type = 1, Sign nhân với -1 tất góc quay theo chiều đảo ngược cho generator xuất bên đối diện với đoạn thẳng từ generator trước Khi Type = 2, tạo đoạn thẳng mà toạ độ đầu điểm cuối đoạn thẳng khác ngược lại cho generator vẽ theo chiều ngược lại Chúng ta Đề tài : Hình học Fractal Trang 103 http://kilobooks.com ĐỒ ÁN TỐT NGHIỆP THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN SVTH: Nguyễn Ngọc Hùng Cường KIL OBO OKS CO M cần đảo tất dấu generator đảo ngược để generator xuất bên với generator trước Cuối cùng, Type = 3, đảo ngược toạ độ cho generator vừa đảo ngược vừa di chuyển sang phía đối diện Hàm làm việc sau: Xác định Type thuộc loại nào? Xác định toạ độ generator lớn nhỏ Nếu Level = hàm vẽ đoạn thẳng Nếu Level khác hàm xác định loại cho tham số Type đoạn thẳng, sau gọi đệ quy Mảng Angle là:{60, 0, -60, -60, -60, 0, 60, 60, 0, 0, -60} NumLines = 11 Hàm áp dụng cho việc phát sinh đường khác, với mức khác Chẳng hạn sau minh hoạ cho hình vẽ trình bày mức đường Complex_Von Kock_Generator ♦ Hàm phát sinh đường cong Peano cải tiến: void ModifiedPeanoGenerator(CDC *pDC, double X1, double Y1,double X2, double Y2, int Level, int NumLines, double LineLen, double Angles[],double &XTemp, double &YTemp) Đối với Level > hàm giống hàm –Generator đường Peano gốc Với Level = 1, hàm có khác chút Thay định nghĩa bước rùa (là biến Turtle_R) 1/3 chiều dài đoạn thẳng ban đầu ta định nghĩa 1/18 chiều dài đoạn thẳng ban đầu, generator viết cho rùa qua đường giống generator đường Peano gốc, sử dụng góc quay giống nhau, dùng bước thay bước generator Peano gốc Tuy nhiên, điểm lưu trữ mảng toạ độ có thay đổi Sau lưu trữ toạ độ thứ nhất, ta lưu trữ vị trí sau bước 5, vị trí lưu trữ cuối bước sau quay góc Các vị trí lại lưu trữ sau bước sau bước đoạn thẳng kế, ngoại trừ bước đoạn thẳng cuối khơng lưu trữ lại Kết đoạn thẳng vẽ, chúng tạo nên đường xiên nối điểm 1/6 khoảng cách đoạn thẳng gặp góc (Ở NumLines = 19) ♦ Hàm phát sinh đườ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[]) ♦Hàm –Generator tam giác Cearo cải tiến sau: Đề tài : Hình học Fractal Trang 104 http://kilobooks.com ĐỒ ÁN TỐT NGHIỆP THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN SVTH: Nguyễn Ngọc Hùng Cường KIL OBO OKS CO M void ModifiedCesaroGenerator(CDC *pDC,double X1, double Y1, double X2, double Y2, int Level,int NumLines, double LineLen, double Angles[],int Sign[]) Hàm giống với hàm đường Cesaro gốc lúc mảng Angle {0, -170, 0, 85, } NumLines = 4, đồng thời chiều dài đoạn generator có khác 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 đoạn thẳng ban đầu Loại chiều dài thứ hai: Bằng nửa chiều dài đoạn ban đầu nhân với 0.9128442 ♦ Hàm –Generator dạng khác đường Cesaro sau: void OtherCesaroGenerator(CDC *pDC,double X1, double Y1, double X2, double Y2, int Level,int NumLines, double LineLen, double Angles[],int Sign) ♦ Hàm phát sinh Polya-Generator sau: void PolyaGenerator(CDC *pDC,double X1, double Y1, double X2, double Y2, int Level,int NumLines, double LineLen, double Angles[],int Sign[]) Chúng ta sử dụng kỹ thuật sử dụng đường Cesaro tức dùng mảng Sign sau gọi đệ quy hàm – Generator Mảng Angles có giá trị {45, } NumLines = ♦ Hàm Peano-Gosper-Generator: void PeanoGosperGenerator(CDC *pDC, double X1, double Y1, double X2, double Y2, int Level, int Type, int NumLines, double LineLen,double Angles[ ]) Hàm giống hàm –Generator đường Gosper, khác thêm hai tham số Sign Type họ Generator phức tạp trình bày phần Complex Von Kock Generator trước Ở NumLines = mảng Angles là: {− 19.1,60,120,−60,−120,0,0 } ♦ Hàm phát sinh đường hoa tuyết Peano 7-đoạn: void Peano7-DoanGenerator(CDC *pDC,double X1,double Y1 ,double X2,double Y2,int Level,int Type,int Sign,int NumLines,double LineLen,double Angles[]) Giống trường hợp generator phức tạp, có khả lựa chọn cho vị trí generator phải chọn cách cẩn thận mức, đoạn thẳng để đảm bảo đường cong tạo thành khơng tự giao hay tự chồng lên Ở NumLines = mảng Angles là: {60,0,−60,−60,−60,0,−60 } Đề tài : Hình học Fractal Trang 105 http://kilobooks.com THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN ĐỒ ÁN TỐT NGHIỆP SVTH: Nguyễn Ngọc Hùng Cường { KIL OBO OKS CO M ♦ Hàm phát sinh đường hoa tuyết Peano 13-đoạn sau: void Peano13-DoanGenerator(CDC *pDC,double X1,double Y1,double X2,double Y2,int Level,int Type,int Sign,int NumLines,double LineLen,double Angles[]) Đối với đường có khả lựa chọn cho vị trí generator phải chọn cách cẩn thận mức, đoạn thẳng để đảm bảo đường cong tạo thành khơng tự giao hay tự chồng lên Ở NumLines = 13 mảng Angle là: {60,0,−60,−60,−60,0,60,60,60,0,60,0,−60 } ♦ Hàm Generator đường Sierpinski sau: void Generator_SierpinskiCurve(CDC *pDC,double X1,double Y1, double X2,double Y2,int Level, int Sign,int NumLines,doubleLinelen, double Angles[],COLORREF color) ♦ Hàm Generator fractal sau: void Generator (float X, float Y,float Width, float Height, unsigned char Level) ♦ Hàm phát sinh để vẽ phong cảnh fractal sau: Trong hàm có đoạn mã sau: void Node(double X1, double Y1, double X2, double Y2, double X3, double Y3, double X4, double Y4, double X5, double Y5, double X6, double Y6, unsigned char Level, int Color1, int Color2) { if(!Level) return; Generate(X1,Y1, X4,Y4, X6,Y6,Level-1,Color1,Color2); Generate(X6,Y6, X5,Y5, X3,Y3,Level-1,Color1,Color2); Generate(X4,Y4, X2,Y2, X5,Y5,Level-1,Color1,Color2); Generate(X4,Y4, X5,Y5, X6,Y6,Level-1,Color1,Color2); } void Generate(double X1, double Y1, double X2, double Y2, double X3, double Y3, unsigned char Level, int Color1, int Color2) { double X4,Y4,X5,Y5,X6,Y6,Ax,Ay,Bx,By,Cx,Cy; Đề tài : Hình học Fractal Trang 106 http://kilobooks.com ĐỒ ÁN TỐT NGHIỆP THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN SVTH: Nguyễn Ngọc Hùng Cường KIL OBO OKS CO M X=X2-X1; Y=Y2-Y1; MidPoint(); X4=X1+Xz-Xp; Y4=Y1+Yz-Yp; Ax=-Xp; Ay=-Yp; X=X3-X1; Y=Y3-Y1; MidPoint(); X6=X1+Xz; Y6=Y1+Yz; Cx=Xp; Cy=Yp; X=X3-X2; Y=Y3-Y2; MidPoint(); X5=X2+Xz; Y5=Y2+Yz; Bx=-Xp; By=-Yp; if(Level) { PlotTriange(X1,Y1,X4+Ax,Y4+Ay,X6+Cx,Y6+Cy,Color1,Color 2); PlotTriange(X6+Cx,Y6+Cy,X5+Bx,Y5+By,X3,Y3,Color1,Color 2) PlotTriange(X4+Ax,Y4+Ay,X5+Bx,Y5+By,X6+Cx,Y6+Cy,Col or1, Color2); PlotTriange(X4+Ax,Y4+Ay,X2,Y2,X5+Bx,Y5+By,Color1,Color 2); Node(X1,Y1,X2,Y2,X3,Y3,X4,Y4,X5,Y5,X6,Y6,Level, Color1, Color2); } else { PlotTriange(X1,Y1,X4,Y4,X6,Y6,Color1,Color2); PlotTriange(X6,Y6,X5,Y5,X3,Y3,Color1,Color2); PlotTriange(X4,Y4,X5,Y5,X6,Y6,Color1,Color2); PlotTriange(X4,Y4,X2,Y2,X5,Y5,Color1,Color2); } } void PlotTriange(double X1, double Y1, double X2, double Y2, double X3, double Y3, int Color1, int Color2) { Đề tài : Hình học Fractal Trang 107 http://kilobooks.com ĐỒ ÁN TỐT NGHIỆP THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN SVTH: Nguyễn Ngọc Hùng Cường KIL OBO OKS CO M int Color; double C1=0.35; double C2=0.92; double Ytt,Zt; Ytt=(Y1>Y2)?Y1:Y2; if(Ytt= 0) Result+=LimitStart; else Result-=LimitStart; Return Result; } Đề tài : Hình học Fractal Trang 108 http://kilobooks.com ĐỒ ÁN TỐT NGHIỆP THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN SVTH: Nguyễn Ngọc Hùng Cường KIL OBO OKS CO M void Gen_Quad(double X1, double Y1, double X2, double Y2, double X3, double Y3, double X4, double Y4, unsigned char Level, int Color1, int Color2) { Generate(X1,Y1, X2,Y2, X3,Y3,Level,Color1,Color2); Generate(X1,Y1, X4,Y4, X3,Y3,Level,Color1,Color2); } void Cactus(double X1, double Y1, int Scale, unsigned char Level, int Color1, int Color2) { Gen_Quad(X1, Y1, X1, Y1+21*Scale, X1+1.6*Scale, Y1+22*Scale,X1+1.6*Scale,Y1,Level,Color1, Color2); Gen_Quad(X1+1.4*Scale, Y1, X1+1.4*Scale, Y1+22*Scale, X1+3*Scale, Y1+21*Scale,X1+3*Scale, Y1,Level,Color1,Color2); Gen_Quad(X1, Y1+9*Scale, X1+7*Scale, Y1+9*Scale, X1+7*Scale,Y1+12*Scale,X1, Y1+12*Scale, 0, Color1,Color2); Gen_Quad(X1, Y1+9*Scale, X1+6*Scale, Y1+9*Scale, X1+7*Scale,Y1+12*Scale,X1, Y1+12*Scale, Level,Color1,Color2); Gen_Quad(X1+7*Scale, Y1+9*Scale, X1+7*Scale, Y1+16*Scale, X1+8.5*Scale, Y1+17*Scale, X1+8.5*Scale, Y1+9*Scale, Level, Color1, Color2); Gen_Quad(X1+8.4*Scale, Y1+9*Scale, X1+8.4*Scale, Y1+16*Scale,X1+10*Scale, Y1+17*Scale, X1+10*Scale,Y1+10*Scale, Level, Color1,Color2); Gen_Quad(X1, Y1+7*Scale, X1-6*Scale, Y1+7*Scale, X1 - 6*Scale, Y1+10*Scale, X1, Y1+10*Scale,0, Color1,Color2); Gen_Quad(X1, Y1+7*Scale, X1-6*Scale, Y1+7*Scale, X1 -6*Scale,Y1+10*Scale, X1,Y1+10*Scale, Level,Color1,Color2); Gen_Quad(X1-7*Scale, Y1+8*Scale, X1-7*Scale, Y1+12*Scale, X1+5.4*Scale, Y1+13*Scale, X1+5.4*Scale, Y1+7*Scale, Level,Color1,Color2); Gen_Quad(X1-5.6*Scale,Y1+7*Scale,X1-5.6*Scale, Y1+13*Scale,X1-4*Scale,Y1+12*Scale, X1-4*Scale, Y+7*Scale, Level,Color1,Color2); } Đề tài : Hình học Fractal Trang 109 http://kilobooks.com ĐỒ ÁN TỐT NGHIỆP THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN SVTH: Nguyễn Ngọc Hùng Cường KIL OBO OKS CO M Để vẽ phong cảnh này, sử dụng kỹ thuật lấp đầy tam giác chia nhỏ Michael Batty giai đoạn trung gian nhằm tránh lổ hỏng Các hàm phong cảnh fractal trình bày phần II bên Đầu tiên, xem qua hàm Generator Hàm xác định chiều dài theo hướng x y cho đoạn tam giác có toạ độ (X1, Y1), (X2, Y2), (X3,Y3), sau gọi hàm MidPoint để xác định phép thay trung điểm theo hướng x y Toạ độ trung điểm thay lưu trữ phép thay cần xác định tam giác chia nhỏ lấp đầy mức mức thấp nhất, đỉnh tam giác lưu trữ vị trí Ax, Ay, Bx, By, Cx, Cy Nếu mức thấp (mức 0), hàm gọi hàm PlotTriange để xác định màu lấp đầy thực việc lấp đầy tam giác mới, mức thấp chưa đạt đến, gọi hàm PlotTriange để lấp đầy tam giác chia nhỏ sau gọi hàm Node, hàm gọi đệ quy hàm Generator để phát sinh tam giác từ tam giác vừa tạo Đối với hàm Node, Level = thốt, trường hợp khác gọi hàm Generator cho tam giác tam giác vừa tạo thành Hàm Gen_Quad chạy Generator hai tam giác tạo thành hình thang Hàm Random_No sử dụng việc xác định thay ngẫu nhiên, hàm có tham số giới hạn (Cả giá trị số dương) số ngẫu nhiên phát sinh Số ngẫu nhiên trả số âm nằm hai giá trị âm hai số giới hạn dương nằm hai giá trị dương hai số giới hạn Còn hàm MidPoint ban đầu lấy số ngẫu nhiên chọn biểu diễn cho việc thay trung điểm dọc theo đường trung trực với khoảng cách theo chiều x lưu trữ giá trị X khoảng cách theo chiều y lưu trữ giá trị Y Khoảng cách nửa độ dài cạnh ứng với trung trực cộng hay trừ với giá trị ngẫu nhiên 1/6 lần chiều dài cạnh Kế đến tính độ dịch chuyển vng góc với cạnh Nó độ dài cạnh xét nhân với số ngẫu nhiên 0.03 0.07 hay -0.07 0.03 Hàm PlotTriange có tham số đỉnh tam giác hai giá trị màu, dùng biến Y_Max giá trị độ cao điều khiển việc chọn lựa màu Đầu tiên hàm chọn giá trị y đỉnh cao tam giác Sau tạo biến Zt theo cơng thức: 2    Ytt + YWMax     Zt = (Y _ Max + YWMax)1 −    Y _ Max + YWMax     Đề tài : Hình học Fractal Trang 110 http://kilobooks.com THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN ĐỒ ÁN TỐT NGHIỆP SVTH: Nguyễn Ngọc Hùng Cường Với Y_Max độ cao điều khiển Ytt độ cao đỉnh cao tam giác KIL OBO OKS CO M Khi giá trị Zt xác định, hàm PlotTriange chọn số ngẫu nhiên Y_Max so sánh giá trị với Zt Nếu giá trị nhỏ hay Zt, màu thứ chọn, ngược lại màu thứ hai chọn Cuối độ cao Ytt giới hạn chọn màu chọn màu thứ nhất, ngược lại chọn màu thứ hai Sau hàm gọi hàm FillTriange để lấp đầy tam giác với màu chọn Hàm Cactus có tham số toạ độ, hệ số vị tự, mức hai màu Nhiệm vụ phát sinh xương rồng Đoạn mã chạy phong cảnh bắt đầu chạy vòng for để gọi hàm Generator 22 lần để tạo vách đá màu đỏ Sau gọi hàm Gen_Quad để vẽ sa mạc màu vàng màu nâu, cuối gọi hàm Cactus bốn lần để tạo xương rồng với vị trí kích thước khác ♦ Hàm phát sinh mặt Mandelbrot: void Mandelbrot(int Mandelbrot_Iterated,int Mandelbrot_Size) ♦ Hàm phát sinh mặt Julia: void Julia(int Julia_Iterated,int Julia_Size) ♦ Hàm phát sinh đường cong Phoenix: void Phoenix(int Phoenix_Iterated,int Phoenix_Size) III.2 Kết cài đặt cách sử dụng chương trình: Trong phần giới thiệu cách sử dụng tác vụ việc thực vẽ đường mặt Fractal ♦ Giao diện chương trình: Giao diện chương trình sau: Đề tài : Hình học Fractal Trang 111 http://kilobooks.com THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN SVTH: Nguyễn Ngọc Hùng Cường KIL OBO OKS CO M ĐỒ ÁN TỐT NGHIỆP Màn hình làm việc có: - Thanh Menu bar - Thanh Tool bar - Vùng hình ảnh vẽ - Thanh Status bar Menu bar gồm đề mục sau: File Edit SelectPoint Color Lines Surface Other Windows About Mỗi đề mục gồm DropDown menu kích hoạt cách gõ Enter dùng phím tổ hợp Các menu Drop down gồm số chức sau: File New: Khởi gán lại Document hữu Open:Mở file Close: Đóng file Save: lưu file Save as… Print: In ấn Print Preview Print setup Recent File Exit: Thốt khỏi chương trình Edit Undo: Quay lại file trước Copy: Sao chép file Paste: Dán file Đề tài : Hình học Fractal Trang 112 http://kilobooks.com ĐỒ ÁN TỐT NGHIỆP THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN SVTH: Nguyễn Ngọc Hùng Cường Selectpoint User select point: KIL OBO OKS CO M Color List Color: Bảng màu cho người sử dụng chọn Lines Von Kock: Vẽ đường thuộc họ đường Von Kock Snowflake: Vẽ đường Von Kock hoa tuyết Gosper: Vẽ đường Von Kock Gosper Segment: Vẽ đường Von Kock bậc II đoạn Segment: Vẽ đường Von Kock bậc II đoạn 18 Segment: Vẽ đường Von Kock bậc II 18 đoạn 32 Segment: Vẽ đường Von Kock bậc II 32 đoạn 50 Segment: Vẽ đường Von Kock bậc II 50 đoạn Complex: Vẽ đường Von Kock phức tạp Peano Peano: Vẽ đường Peano ngun thuỷ Modified Peano: Vẽ đường Peano cải tiến Cearo Triangle: Vẽ đường tam giác Peano Modified Cesaro: Vẽ đường tam giác Cesaro cải tiến Other Cesaro: Vẽ dạng khác đường cesaro Polya Triangle: Vẽ đường tam giác polya Peano Gosper: Vẽ Peano Gosper Peano 7-Segment: Vẽ đường hoa tuyết Peano đoạn Peano 13-segment: Vẽ đường hoa tuyết Peano 13 đoạn Đề tài : Hình học Fractal Trang 113 http://kilobooks.com ĐỒ ÁN TỐT NGHIỆP THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN SVTH: Nguyễn Ngọc Hùng Cường Sierpinski Sierpinski Curve: Vẽ đường tam giác Sierpinski KIL OBO OKS CO M Surfaces Julia Set: Vẽ tập Julia Mandelbrot Set: Vẽ tập Mandelbrot Phoenix: Vẽ đường cong Phoenix Other Fractal Tree: Vẽ Fractal Landscape: Vẽ cảnh vách núi đá IFS:Vẽ phép biến đổi 2D 3D 2D Fern Leaf: Vẽ ảnh 2D 3D Fern Leaf: Vẽ ảnh 3D Window New window: Mở cửa sổ Cascade: Thu nhỏ cửa sổ Tile Arrange Icons About fractal…: Giới thiệu chương trình Index: Dự trù cho hướng dẫn ♦ Hạn chế: Hình học Fractal bao gồm nhiều cấu trúc đường mặt khác Do thời gian có hạn nên chương trình số đường mặt chưa kịp cài đặt Bên cạnh chương trình chưa thể hiệu ứng lửa mây v.v… ♦ Kết số đường mặt cài đặt được: i) Các đường thuộc họ đường Von Kock như: - Đường hoa tuyết Von Kock - Đường Gosper - Đường Von Kock bậc hai đoạn - Đường Von Kock bậc hai đoạn - Đường Von Kock bậc hai 18 đoạn - Đường Von Kock bậc hai 32 đoạn - Đường Von Kock bậc hai 50 đoạn - Đường Generator phức tạp ii) Các đường thuộc họ đường Peano như: - Đường Peano ngun thuỷ - Đường Peano cải tiến - Tam giác Cesaro Đề tài : Hình học Fractal Trang 114 http://kilobooks.com ĐỒ ÁN TỐT NGHIỆP THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN SVTH: Nguyễn Ngọc Hùng Cường KIL OBO OKS CO M - Tam giác Cesaro cải tiến - Một dạng khác đường Cesaro - Tam giác Polya - Đường Peano Gosper - Đường hoa tuyết Peano đoạn - Đường hoa tuyết Peano 13 đoạn iii) Đường Sierpinski iv) Cây Fractal v) Phong cảnh Fractal vi) Cây dương xỉ chiều đương xỉ chiều vii) Mặt Mandelbrot viii) Mặt Julia ix) Đường cong Phoenix ♦ Hướng phát triển đề tài: Hình học Fractal cài đặt thêm số đường mặt sau: - Tạo đường Hilbert - Tạo đường tròn Apolo - Tạo đường cong Dragon - Tạo hiệu ứng lửa, mây… - Tạo dãy núi… Đề tài : Hình học Fractal Trang 115 http://kilobooks.com THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN ĐỒ ÁN TỐT NGHIỆP SVTH: Nguyễn Ngọc Hùng Cường TÀI LIỆU THAM KHẢO KIL OBO OKS CO M The Fractal Geometry of Nature Benoit B.Mandelbrot Fratal Geometry in Digital Imaging Martin J.Turner Jonathan M.Blackledge Patrick R Andrews Fractal Everywhere Michale Barnsley Advanced Fractal Programming in C Roger T.Stevens Tự học lập trình Visual C++ 6.0 Nguyễn Văn Hồng & Nhóm tác giả Elicom Đề tài : Hình học Fractal Trang 116 [...]... KHOA HỌC CƠ BẢN: Có thể nói cùng với lý thuyết topo, hình học phân hình đã cung cấp cho khoa học một cơng cụ khảo sát tự nhiên vơ cùng mạnh mẽ như đã trình bày trong phần I.1, vật lý học và tốn học thế kỷ XX đối đầu với sự xuất hiện của tính hỗn độn trong nhiều q trình có tính quy luật của tự nhiên Từ sự đối đầu đó, trong những thập niên tiếp theo đã hình thành một lý thuyết mới chun nghiên cứu về các... Đề tài : Hình học Fractal Trang 20 http://kilobooks.com THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN ĐỒ ÁN TỐT NGHIỆP SVTH: Nguyễn Ngọc Hùng Cường CHƯƠNG II: MỘT SỐ KỸ THUẬT CÀI ĐẶT HÌNH HỌC PHÂN HÌNH KIL OBO OKS CO M II.1 HỌ ĐƯỜNG VONKOCK: Trong phần này chúng ta sẽ cùng nhau thảo luận các fractal được phát sinh bằng cách sử dụng đệ qui initiator / generator với kết quả là các hình tự đồng dạng hồn tồn Các hình này... tài : Hình học Fractal Trang 12 http://kilobooks.com THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN ĐỒ ÁN TỐT NGHIỆP SVTH: Nguyễn Ngọc Hùng Cường KIL OBO OKS CO M rất nhiều Chỉ gần đây với sự ra đời của lý thuyết fractal và sự hỗ trợ đắt lực của máy tình, các nghiên cứu chi tiết về sự hỗn độn mới được đẩy mạnh Vai trò của hình học phân hình trong lĩnh vực này thể hiện một cách trực quan các cư xử kỳ dị của các tiến trình. .. chiều fractal là: log18 D= ≈ 1.6131 log 6 Hình sau là mức đầu tiên của đường cong Vonkock bậc hai 18 đoạn: Đoạn mã đối với đường 1 8- oạn giống như đoạn mã của đường hoa tuyết, trong đó: NumLine = 18 Mảng Angle có giá trị sau: {0, 90, 0, -9 0, 0, -9 0, -9 0, 90, 90, 0, -9 0, -9 0, 90, 90, 0, 90, 0, 0 } Ngồi ra, đường Von Kock 1 8- oạn có các mức khác nhau thì tương ứng với các hình dạng khác nhau Đề tài : Hình. .. pDC->MoveTo((int)XPoints[ I ], (int) YPoints [ I ]); pDC->LineTo((int)XPoints[ I+1 ], (int) YPoints [ I+1 ]); delete[]XPoints; delete[]YPoints; Hàm này cũng có thể áp dụng cho việc phát sinh ra các đường khác cùng họ Chẳng hạn sau đây là một minh hoạ cho hình vẽ trình bày ở mức 3 của đường Von Kock-Snowflake Hình : Đường Von Kock-Snowflake mức 3 Lưu đồ của đoạn mã ở trên như sau: Đề tài : Hình học Fractal. .. 0 56' Vì N = 3 nên số chiều fractal là: D= log 3 ≈ 1.3652 log 5 Hình sau là mức đầu tiên của đường cong Von Kock bậc hai 3- oạn: Đoạn mã đối với đường 3- oạn giống như đoạn mã của đường hoa tuyết Trong đó: NumLines = 3 Mảng Angle có giá trị sau: {26.56, -9 0.0 } Ngồi ra, đường Von Kock 3- oạn có các mức khác nhau thì tương ứng với các hình dạng khác nhau Đề tài : Hình học Fractal Trang 29 http://kilobooks.com... = 8 Mảng Angle có giá trị sau: {0, 90, -9 0, -9 0, 0, 90, 90, 0 } Ngồi ra, đường Von Kock 8- oạn có các mức khác nhau thì tương ứng với các hình dạng khác nhau Hình sau là mức 5 của đường Von Kock 8- oạn □ ĐƯỜNG VON KOCK BẬC HAI 1 8- OẠN: Hình sau là generator của đường Von Kock bậc hai 1 8- oạn: Đề tài : Hình học Fractal Trang 31 http://kilobooks.com THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN SVTH: Nguyễn Ngọc Hùng... mã sau đây minh hoạ cách cài đặt: void Turn(double Angle, double &Turtle_Theta) { } Turtle_Theta+=Angle; ♦ Hàm Step (Turtle-X, Turtle-Y, Turtle-R, Turtle-Theta): Đề tài : Hình học Fractal Trang 22 http://kilobooks.com ĐỒ ÁN TỐT NGHIỆP THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN SVTH: Nguyễn Ngọc Hùng Cường KIL OBO OKS CO M Hàm này di chuyển con rùa đi một bước Chiều dài của mỗi bước là Turtle-R Ở đây hàm sử dụng vị... 90,0,90,0,−90,−90,90,0,90,90,−90,0,90,90,−90,−90,0 } Ngồi ra, đường Von Kock 3 2- oạn có các mức khác nhau thì tương ứng với hình dạng khác nhau Đề tài : Hình học Fractal Trang 34 http://kilobooks.com THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN ĐỒ ÁN TỐT NGHIỆP SVTH: Nguyễn Ngọc Hùng Cường KIL OBO OKS CO M Hình sau là mức 4 của đường VonKock 3 2- oạn: □ ĐƯỜNG VON KOCK BẬC HAI 5 0- OẠN: Hình sau là generator của đường Von Kock bậc hai 5 0- oạn: Giả sử chiều dài từ đầu... khảo sát, qua đó tìm ra được các đặc trưng hoặc các cấu trúc tương tự nhau trong các ngành khoa học khác nhau Hình học phân hình đã được áp dụng vào nghiên cứu lý thuyết từ tính, lý thuyết các phức chất trong hố học, lý thuyết tái định chuẩn và phương trình Yang & Lee của vật lý, các nghiệm của các hệ phương trình phi tuyến được giải dựa trên phương pháp xấp xỉ liên tiếp của Newton trong giải tích số,… ... Turtle_R=sqrt((XPoints[NumLines -2 ]- XPoints[Split -1 ])* (XPoints[NumLines -2 ]- XPoints[Split -1 ]) + (YPoints[NumLines -2 ]- YPoints[Split -1 ])* (YPoints[NumLines -2 ]- YPoints[Split -1 ]))*LineLen; Turtle_Theta=... trị sau: { 0, 90, -9 0, -9 0, 0, 0, 90, 0, 0, 0, 90, 90, 0, 0, 90, 0, -9 0, 0, 0, 0, -9 0, -9 0, 0, 0, 90, 0, -9 0, 0, 0, 90, 90, 90, 0, 0, 0, 90, 0, -9 0, 0, 0, -9 0, -9 0, 0, 90, 0, -9 0, 0, 0, 90, 90,... đường 1 8- oạn giống đoạn mã đường hoa tuyết, đó: NumLine = 18 Mảng Angle có giá trị sau: {0, 90, 0, -9 0, 0, -9 0, -9 0, 90, 90, 0, -9 0, -9 0, 90, 90, 0, 90, 0, } Ngồi ra, đường Von Kock 1 8- oạn có

Ngày đăng: 02/12/2015, 12:26

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan