Nghiên cứu lý thuyết dựng hình
Trang 1CHƯƠNG II : NGHIÊN CỨU LÝ THUYẾT DỰNG HÌNH
I- CÁC KẾT XUẤT ĐỒ HỌA CƠ BẢN:
Một kết xuất cơ bản là một phần tử ảnh được cung cấp trực tiếp trong phần mềm đồ họa hoặc từ phần cứng Trong phần này chúng ta sẽ giới thiệu về các kết xuất cơ bản có trong chuẩn GKS.
Ví dụ : thuộc tính cơ bản của đường thẳng là :màu, độ rộng đường, kiểu Kết xuất đồ họa cơ bản của GKS:
Gồm có sáu phần
Một polyline là một dãy các đường thẳng nối nhau, dãy này không nhất thiết phải đóng, và các đường có thể cắt nhau Nơi hai đường cắt nhau gọi là đỉnh của polyline Như vậy dữ liệu cần để xác định polyline là danh sách các đỉnh, mỗi đỉnh là một cặp tọa độ:
(x1, y2),(x2, y2)…(xn, yn)
Những tính chất cơ bản của polyline được mô tả trong GKS là:
.Màu: Mọi đường trong polyline có cùng màu Muốn có màu khác ta
phải tạo polyline khác
.Kiểu đường: Đường có thể vẽ theo mẫu như liền nét(solid) đứt quãng
(dashed), chấm điểm (dotted) hay chấm điểm và đứt quãng
.Độ dày: Xác định độ dày mỏng của đường Mọi đường trong polyline
có cùng độ dày.
- Trang
Trang 224-2- Polymaker:
Polymaker sẽ đặt một số dấu hiệu (marker) có cùng dạng và kích thước tại một số vị trí tuỳ ý Hình dạng đơn giản của polymaker như: +, -, *, 0, hay các đặt biệt như ,♥ , … Kiểu của dư õliệu là một trong những thuộc tính của polymaker nên phải được xác định trước polymaker Ta có thể dùng kiểu dữ liệu polypoint để xác định vị trí vẽ dấu hiệu polymaker.
3- Text :
Hầu hết các thiết bị đồ hoạ có hai chế độ văn bản (text) và đồ họa (graphic) Thông thường, trong chế độ văn bản ta không thể đặt các ký tự bắt kỳ đâu, mà phải trên những hàng và cột nhất định.
Nếu muốn uyển chuyển hơn trong việc chọn kích thước và vị trí của ký tự , ta phải dùng chế độ đồ họa cùng với phần mềm thích hợp.
Trong GKS, một chuỗi ký tự , String, như ‘Population of USA’ được vẽ bắt đầu tại một điểm (x, y) , dùng thủ tục như Text(x, y , String) Một khía cạnh thứ hai nữa là chọn các thuộc tính , gồm :
Màu: việc chọn màu ảnh hưởng đến kết qủa.
Font: một loại font gồm các ký tự có kích thước và dạng riêng
Kích thước ký tự : cả độ cao và độ rộng của ký tự đều có thể biến
đổi Nếu ký tự được định nghĩa từ polyline thì dễ thay đổi kích thước hơn.
Khoảng cách của các ký tự : có thể điều chỉnh rất gần hoặc xa nhau Dóng hàng : văn bản có thể được dóng hàng như canh trái , phải,
hoặc giữa
Hướng in: chuỗi ký tự có thể được in theo một trong bốn hướng :
sang phải, lên trên, xuống dưới, và qua trái
In xuyên : chuỗi ký tự có thể in xuyên theo một hướng nào đó.4- Fill area (tô vùng)
Thuộc tính tô vùng thường được dùng để tô một vùng theo màu hay mẫu (pattern) nào đó.
5- Cell Array :
Cell Array được vẽ là một mãng các ô hình chữ nhật Màu của các ô được gứi cho thủ tục Cell_Array( ).
6- Generlized Drawing:
- Trang
Trang 3Đây là vẽ tự do.
II – NGHIÊN CỨU CÁC PHƯƠNG PHÁP TẠO HÌNH:1- Cách tạo hình lợp ngói pattern đơn giản:
Các cách lợp ngói phẳng : ứng dụng trong lát gạch nền, hay còn gọi là CAIRO.
Gồm có các loại nền sau: lát gạch tam giác đều, hình vuông, lục giác đều (hình 1) Lưu ý tam giác đều phải luân phiên đổi hướng để vừa khít nhau ( vì sáu tam giác đều có thể hình thành lục giác đều ) Lợp ngói tam giác đều có thể thay cho lục giác đều
1.1 - Phân tích tam giác đều : (hình 1A)
Để có được cách lợp ngói tam giác như trên thì chúng ta có thể thực hiện như sau : mỗi lần chúng ta vẽ một dòng các tam giác theo cùng một hướng có đường ngang làm cơ sở Các tam giác của dòng sau được vẽ ngược chiều với dòng trước Giải thuật vẽ cách lợp ngói bằng tam giác này chỉ phụ thuộc vào số lần lặp : để vẽ bao nhiêu tam giác của một dòng, và số lần lặp cần vẽ bao nhiêu dòng tam giác Vậy nói chung sau khi vẽ được tam giác , để có được bao nhiêu tam giác trên dòng
Trang 4và có bao nhiêu dòng tam giác chỉ phụ thuộc vào hai biến i (số tam giác trên dòng ) và j (số dòng của tam giác )
1.2 - Phân tích cách lợp ngói bằng hình vuông : (hình 1B)
Để có được cách lợp ngói bằng hình vuông như trên thì các bước thực hiện như sau : đầu tiên ta vẽ một dòng các hình vuông theo một hướng nhất định và có đường ngang làm cơ sở Các hình vuông của dòng sau được vẽ tương tự như dòng trước Điểm xuất phát dòng sau có cùng tọa độ x như dòng trước Chỉ khác nhau là toạ độ y mà thôi Để vẽ được bao nhiêu hình vuông trên dòng, và bao nhiêu dòng hình vuông thì phụ thuộc vào hai biến vòng lặp i và j cũng như vẽ tam giác.
1.3 - Phân tích lợp ngói bằng lục giác: (hình 1C)
Đầu tiên ta cũng vẽ một dòng lục giác đều và các lục giác của dòng sau không giống như hình vuông là cùng tọa x Mà các lục giác của dòng sau phải lùi vào 1/2 độ rộng lục giác, và dòng kế tiếp nữa thì nhô lên trước 1/2 độ rộng của lục giác Nói chung là các dòng chẳn là cùng tọa độ xuất phát x, và các dòng lẻ cùng toạ độ xuất phát x(tọa độ x dòng chẳn và x dòng lẻ khác nhau) Và số lần lặp của lục giác trên dòng và số lần lặp của dòng cũng tương tự như lợp ngói bằng tam giác đều và
Muốn dựng được cung Hilbert thì chúng bắt nguồn từ bốn cái hộp ba cạnh vẽ trong một hướng nhất định Mỗi cái hộp tương ứng với một cung hilbert bậc-1 gọi là A1, B1, C1, và D1 (hình 2) Mỗi cung Hilbert tương ứng có một bậc nhất định như : 1, 2, 3,… và một trong bốn hướng, gọi là A, B, C, hay D Các cung bậc-1 trên được nối với nhau bởi những đoạn nối (còn gọi là thanh chống) để tạo nên cung bậc-2 (hình 3), tương ứng là A2 được hình thành từ các thành phần của cung bậc-1 như sau: B1, "đường nối lên (up)", A1, "đường nối phải (right)", lại A1, "Đường nối xuống (down)", cuối cùng là C1 Như vậy cấu tạo của A2 là B, lên, A,
- Trang
27-A1 D1
Trang 5phải, A, xuống, C Tương tự vậy ta được B2 gồm:A, phải, B, lên, B, trái, D Còn C2 gồm: D1, trái, C1, xuống, C1, phải va A1 Và D2 gồm:C1, xuống, D1, trái, D1, lên
Việc này cứ tiếp tục cho mọi bậc cao hơn của cung Vídụ: B9 được hình thành từ A8, phải, B8, lên, B8, trái và D8 Ta có bản sau cho hướng và chiều của cung Hilbert
Trang 6Bảng chiều hướng của cung : A : BAAC A: lên – phải –xuống B :ABBD B: phải – lên – trái C :DCCA C: trái –xuống – phải D :CDDB D: xuống – trái –lên
2.2- Cung Reptile:
Reptile là một lớp các cách lợp ngói không có chu kỳ rất dễ mô tả đệ quy Các bản tái tạo khác nhau của Reptile vừa khít nhau để hình thành một Reptile lớn có cùng dạng Như vậy một Reptile được định nghĩa đệ quy từ bản nhỏ hơn của chính nó Hình 4 cho thấy một số bậc của triomino-L, là một dạng bao gồm bốn hướng nhỏ hơn A, B, C, và D của chính nó (hình 3a) Sau đó mỗi triomino có thể được thay bởi bốn phần nhỏ này Bốn phần nhỏ này lại có thể được thay bởi bốn phần nhỏ hơn nữa,… Bậc của cung sẽ xác định số lần tinh chế
Trang 7Cung này rất hấp dẫn vì nó có thể tạo ra đường dài vô hạn trong một vùng hữu hạn
Các kết sinh kế tiếp của cung Koch được cho trong hình 5 Bắt đầu từ đường ngang độ dài bằng 1 (hình 5a) Để tạo cung bậc-1 (gọi là K1) chia đường thành ba phần, và thay đoạn giữa bằng tam giác đều nhô ra có cạnh dài bằng 1/3 K0 (hình 5b) Bây giờ toàn bộ đường có độ dài bằng 4/3 Cung bậc hai K2 cũng được hình thành từ K1 K2 có được bằng cách lại dựng các tam giác đều từ bốn đoạn của K1, kết qủa thu được từ hình 5c Vì mỗi đoạn có độ dài tăng 1/3 lần, nên toàn bộ cung dài ra 4/3 lần Như vậy Ki = (4/3)Ki-1 Khi i tăng vô hạn thì độ dài này cũng tăng vô hạn.
Như vậy cung Koch bậc n gồm sự tinh chế bốn đoạn của mỗi đoạn Kn-1 (Với K0
là đường thẳng trên ) Cung Koch được định nghĩa đệ quy từ sự tinh chế của các cung bậc-thấp hơn
2.4 - Cung PolySpirals:
Có bốn con rệp tại bốn góc của hình vuông có cạnh là t Mỗi con sẽ chạy theo một hướng ngược chiều kim đồng hồ về phía con gần nhất và cùng di chuyển với một tốc độ (như vậy nó tạo thành xoắn logarithmic) Hình 6, đầu tiên các con rệp nằm ở góc hình vuông ABCD Để xác định chiều đi của con A, đánh dấu điểm a trên cạnh BC cách B một tỷ lệ f Điểm này gọi là f-giao, được xác định từ dạng
Trang 8tham số của đoạn BC Tương tự , tính được các điểm b, c, và d Giả sử con rệp nhảy, nhảy sao cho con A nhảy một khoảng tỷ lệ với f trên đoạn Aa, tương tự những con rệp khác cũng vậy Sau mỗi quá trình nhảy, quá trình được lặp lại: mỗi con nhảy một tỷ lệ f từ vị trí hiện tại đến f-giao của nó trên một cạnh của hình vuông trước Một đường thẳng được vẽ từ đầu đến cuối mỗi bước nhảy để mỗi con để lại cái đuôi của nó tạo thành hình xoắn trong rất đẹp.
2.5 - Cung C:
Một họ đường cong dễ dàng định nghĩa bằng sự đệ quy gây sự lôi cuốn không kém nhờ hiệu ứng hình học qua máy tính và sự đơn giản gần gũi trong cách xây dựng bao gồm nhiều đường cong được xây dựng trên cơ sở đệ quy một đường thẳng Đường cong C được xây dựng trên cơ sở thay thế một đoạn thẳng bằng một đường gấp khúc hai đoạn thẳng hợp với nhau một góc π/2 Hai đoạn thẳng con này có độ dài bằng 1/√2 lần đoạn thẳng cấp cha của nó Để vẽ các đường cấp 2 từ đoạn thẳng cấp 1 ta bắt đầu ở một đầu đoạn thẳng này (đoạn thẳng cấp 1) vẽ đoạn thẳng cấp hai dài 1/√2 lần đoạn thẳng cấp 1 và hợp với đoạn thẳng cấp 1 một góc π/4 sau
Trang 9đó từ vị trí hiện hành ( đầu cuối đoạn thẳng cấp 2 thứ nhất ) vẽ đoạn thẳng cấp 2 cũng có chiều dài bằng 1/√2 lần đoạn thẳng cấp 1 và hợp với đoạn thẳng cấp 2 thứ nhất một góc -π/2 Cứ như thế từ việc thay thế 2 đoạn thẳng cấp n cho mỗi đoạn thẳng cấp n –1 ta được một đường cong hình chữ C trông đẹp mắt.
2.6- Cung Rồng: Tương tự cung C.2.7 - Hoa hồng nguyên tố:
Hoa hồng nguyên tố thực chất là một đa giác đều có đầy đủ các đường chéo Ta cũng có thể vẽ hoa hồng nguyên tố bằng cách phát triển thành phần vẽ đa giác đều, nhưng hoa hồng nguyên tố có một có điểm đặc biệt là ta có thể vẽ chỉ bằng một nét bút vẽ không nhất bút lên ( một lần đặt bút và không nhất bút lên khi vẽ cho đến khi vẽ hoàn tất ) Mặt khác thành phần vẽ đường thẳng thực hiện và di chuyển điểm hiện hành đến điểm cuối của đường thẳng Vì vậy ta có thể vẽ hoa hồng nguyên tố theo một giải thuật tối ưu như sau:
Việc xây dựng giải thuật vẽ hoa hồng nguyên tố dựa trên giải thuật vẽ đa giác và các đường chéo của nó Như đã nói ở trên hoa hồng nguyên tố đặt biệt ở chỗ có thể vẽ và chỉ cần một nét bút nhờ vậy ta có thể vẽ đơn giản hơn.
- Trang
Hình 7
Trang 10Lần thứ nhất vẽ đường thẳng lần lượt qua các đỉnh 1, 2, 3,… N, 1 (vẽ đa giác) Lần thứ hai cũng vẽ lần lượt như lần một nhưng mỗi lần vẽ bỏ đi một đỉnh : 1, 3 , 5, … N –1, 1.
Lần thứ ba cũng vẽ lần lượt nhưng mỗi lần vẽ bỏ qua hai đỉnh 1, 4 , … N – 2.1.
Cứ như thế quá trình được lập lại ( N – 1) / 2 lần lập Mỗi lần lập vẽ đúng N đường Tổng số đường phải vẽ qua các lần lặp là N(N –1 ) / 2 đường
Hình 7 là hoa hồng nguyên tố bậc 5, bậc 7, bậc 17 Ví dụ: Bậc 5 thì số lần lặp là 2, tổng số đường là 10
- Trang
Hinh 8