1. Trang chủ
  2. » Công Nghệ Thông Tin

Đệ quy cùng hình học

2 639 2
Tài liệu đã được kiểm tra trùng lặp

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Đệ Quy Cùng Hình Học
Tác giả Phạn Xuân Bách
Trường học Trường Đại Học
Chuyên ngành Đồ Học Vi Tính
Thể loại Bài Luận
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 2
Dung lượng 48 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Đệ quy cùng hình học

Trang 1

Cung được đĩnh nghĩa đệ quy,

quy tắc và cách vẽ

Phạn Xuân Bách

Cung là một đối tượng cơ bản trong đồ học vi tính Cung cho ta những hình ảnh đơn giản nhưng khá bắt mắt (trừ những khung phức tạp như Fratal) Các cung thường có quy tắc và được định nghĩa dưới dạng tham số hay đệ quy.ở đây chúng ta chỉ xét các cung được định nghĩa đệ quy Cũng có thể bạn không hứng thú lắm với hình ảnh các cung nhưng mình nghĩ thuật toán để vẽ có thể giúp ích được cho bạn trong khi lập trình đấy Chúng ta xét 4 cung cơ bản là cung koch, cung C, cung Hilbel và cung Sierpinski

1 Cung Koch

Cung này được nhà toán học Helge von Koch tìm ra năm 1904, nó có thể tạo ra một đường dài vô hạn trong một vùng hữu hạn Nó được định nghĩa như sau:

Từ một đoạn thẳng ban đầu, nó được thay thế 4 đoạn thẳng có cùng chiều dài và bằng 1/3 chiều dài đoạn thẳng ban đầu Cách bố trí như hình vẽ.(hình)

Đó là cung Koch bậc 1 Để vẽ cung Koch bậc 2 ta thay mỗi đoạn của cung Koch bậc 1 theo quy tắc đó Cũng theo quy tắc đó cho mỗi đoạn của cung Koch bậc n-1, ta có cung bậc n Đây là thuật giải để vẽ

Procdure Koch(dir, len:real; n: byte);

Const rads=0,017453292; {pi/180}

Begin

If n>0 then

Begin

Koch(dir,len/3,n-1);{đoạn 1}

Koch(dir+60,len/3,n-1);{đoạn 2}

Koch(dir-60,len/3,n-1);{đoạn 3}

Koch(dir,len/3,n-1);{đoạn 4}

End

ElseLineRel(Round(len*cos(Rads*dir)),-Round(len*sin(Rads*dir)));

End;

Với dir,len là hướng (góc) và độ dài ban đầu; n: độ sâu của đệ quy

Một đoạn thẳng bất kỳ có thể vẽ được thành cung Koch Chúng ta có thể vẽ cung Koch cho các cạch của một đa giác bất kỳ miễn là biết được đỉnh, góc bắt đầu và độ dài của một cạnh Bằng hình học giải tích vectơ, bạn có thể biết được những yếu tố đó nhưng phải quy ước chiều quay của các cạnh là cùng chiều với kim đồng hồ Và lúc đó bạn sửa tham số thế nào cho hợp?

Đây là đoạn chương trình vẽ cung Koch trên ba cạnh của tam giác đều với đỉnh đầu là (xs,ys), độ dài len theo phương có góc bắt đầu là As

Procedure UDKoch(xs,ys:integer;As,len:real;n:byte);

Begin

MoveTo(xs,ys);

Koch(As+60,len,n);

Trang 2

Koch(As-60,len,n);

Koch(As+180,len,n);

End;

Bạn thử vẽ cung Koch cho đa giác đều m đỉnh thử xem

2 Cung C

Cung C hình thành dựa vào việc tinh chế một đoạn thẳng và tiến trình đó được định nghĩa như sau:

Dựa vào cách định nghĩa, bạn thử xây dựng thủ tục vẽ cung C xem Ta có được cung C bậc n bằng việc thay mỗi đoạn thẳng của cung C bậc n-1 theo cùng quy tắc

Từ cung C, cung rồng được định nghĩa như sau: (hình)

Tinh chế đoạn thứ hai trong cung C theo chiều ngược với đoạn thứ nhất, ta thu được cung rồng

Đây là thủ tục vẽ cung rồng với h là biểu điều khiển hướng quay

Procedure CungR(dir, len: real;h :shortint; n:byte);

Const fct=0.707106781; {1/sqrt(2)}

Begin

If n>0 then

Begin

cungR(dir+h*45,len*fct,1,n-1);

cungR(dir-h*45,len*fct,-1,n-1);

end

else

LineRel(Round(len*cos(rads*dir)),-Round(len*sin(rads*dir)));

End;

Lúc gọi thủ tục, bạn gọi với tham số h=1; Khi vẽ bạn nhớ đến điểm khởi đầu, hướng bắt đầu, độ dài và độ sâu đệ quy Bạn có thể tạo điểm dừng đệ quy cho chiều dài của cạnh, chỉ thực hiện khi len còn lớn hơn Minlen (tuỳ độ phân giải thiết bị)

Hẹn gặp lại bạn khi chúng ta tìm hiểu về cung Hilbert và cung SierpinaSki, những cung được định nghĩa phức tạp hơn

Ngày đăng: 07/09/2012, 11:40

TỪ KHÓA LIÊN QUAN

w