Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (105.26 KB, 2 trang )
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