Da vào hình v trên, ta cĩ: ựẽ SUBJ_LIST: a, 1,b,2, c, 3,4, d, 5, 6

Một phần của tài liệu Đề tài: Thiết kế hệ thống kiểm tra các quan hệ hình học trong không gian 2D và 3D ppsx (Trang 37 - 48)

CLIP_LIST: A, 6 ,3 , 2, B, C, D, 4, 5

Thiết kế hệ thống kiểm tra các quan hệ hình học trang 37

D 6 5 4 3 2 1 d c b a C B A

Luận văn tốt nghiệp

Duyệt SUBJ theo hướng đi tới cho tới khi tìm được 1 điểm giao đi vào (entering intersection), là điểm giao mà SUBJ di chuyển từ ngồi vào trong đa giác CLIP.Và đưa điểm này vào danh sách xuất đa giác được clip.

Duyệt SUBJ tới khi gặp 1điểm giao khác. Nhảy ra khỏi SUBJ và di chuyển theo CLIP thay vì SUBJ. Duyệt CLIP theo hướng đi tới. Tới khi gặp một điểm giao, nhảy ra khỏi CLIP và duyệt theo SUBJ theo hướng đi tới, và cứ tiếp tục như vậy. Mỗi đỉnh hoặc mỗi điểm giao gặp phải khi duyệt sẽ được đưa vào danh sách xuất đa giác được clip. Lặp lại tiến trình trên giữa 2 đa giác, duyệt mỗi đa giác theo hướng đi tới cho tới khi đỉnh đầu tiên được gặp lại. Danh sách xuất ra ở thời điểm này (1,b,2,B)

Bây giờ, ta kiểm tra một điểm giao“entering” khác của SUBJ. Và sẽ tạo ra danh sách xuất (3,4,5,6). Việc kiểm tra những điểm giao “entering” khác sẽ chỉ ra là tất cả chúng đã được duyệt, quá trình chấm dứt.

Cách thức để hiện thực quá trình xử lý này là xây dựng hai danh sách SUBJ_LIST: a, 1, b, 2, c, 3, 4, d, 5, 6

CLIP_LIST : A, 6, 3, 2, B,1, C, D, 4 , 5

Mà trong đo, việc duyệt mỗi đa giác và liệt kê những đỉnh và điểm giao phải theo thứ tự được gặp.

Giải thuật:

-Bước 1: Tạo danh sách SUBJ_LIST

Duyệt lần lượt mỗi cạnh đa giác SUBJ theo thứ tự cùng chiều kim đồng hồ {

- Tìm các điểm cắt của cạnh Pi-Pi+1 với đa giác CLIP.

- Sắp xếp danh sách điểm cắt theo hồnh độ tăng dần . Nếu hồnh độ Pi.x=Pi+1.x thì sắp xếp theo tung độ.

Thiết kế hệ thống kiểm tra các quan hệ hình học trang 38

1 b 2 3 4 d 5 6 a a restar t start SUBJ_LIST: SUBJ_LIST: A 6 3 2 B 1 C D 4 5

Luận văn tốt nghiệp

- Đưa đỉnh Pi vào danh sách SUBJ_LIST

- Đưa các điểm cắt từ danh sách điểm cắt vào SUBJ_LIST theo hướng đi từ Pi tới Pi+1

}

-Bước 2: Tạo danh sách CLIP_LIST

Duyệt lần lượt mỗi cạnh đa giác CLIP theo thứ tự cùng chiều kim đồng hồ {

- Tìm các điểm cắt của cạnh Pi- Pi+1 với đa giác SUBJ.

- Sắp xếp danh sách điểm cắt theo hồnh độ tăng dần. Nếu hồnh độ Pi.x=Pi+1.x sắp xếp theo tung độ.

- Đưa đỉnh Pi vào danh sách CLIP_LIST.

- Đưa các điểm cắt từ danh sách điểm cắt vào CLIP_LIST theo hướng đi từ Pi tới Pi+1.

}

-Bước 3: Duyệt danh sách SUBJ_LIST và CLIP_LIST. Vịng lặp (1)

Vịng lặp (2)

- Tìm điểm giao “entering” chưa duyệt của SUBJ_LIST. - Duyệt trên SUBJ_LIST tới khi thấy điểm giao tiếp theo . (adsbygoogle = window.adsbygoogle || []).push({});

- Chuyển sang duyệt trên CLIP_LIST tới khi thấy điểm giao tiếp theo. Cho tới khi điểm đầu tiên(điểm ‘entering’) được gặp lại. (vịng lặp 2 ) - Xuất Danh sách đa giác tìm được ở trên.

Cho tới khi tất cả các điểm giao ‘entering’ đã được duyệt (vịng lặp 1)

10. Kiểm tra tính lồi của đa giác

Cơ sơ tốn học:

-Nhận biết quay trái với quay phải: Cĩ những thuật giải ta phải duyệt một đa giác, lần lượt thăm mỗi đỉnh hay cạnh. Ta xem như di chuyển theo một cạnh từ đỉnh này đến đỉnh kia và sau đĩ ra cạnh kế. Như vậy cần phải biết đi theo chiều phải hay trái.

Ví dụ, nếu P1, P2, P3 là ba cạnh kề nhau của đa giác, ta tạo vector cạnh a=P2-P1 và b=P3- P2. Hình (1) cho thấy trường hợp a và b nằm trong mặt xy và quay trái khi đi từ a đến b. Cịn hình (2) là quay phải.

Thiết kế hệ thống kiểm tra các quan hệ hình học trang 39

b a

b a

Luận văn tốt nghiệp

Giả sử dùng hệ tay phải ở hình 1 và hình 2 nên trục z (hay chiều k) hướng ra ngồi từ trang sách tới chúng ta. Dùng quy tắc tay phải, tích a x b chỉ ra ngồi với thành phần k dương. Nếu lập tích vơ hướng vector này với chính k, sẽ được một đại lượng mà dấu của nĩ cho biết chiều quay, dương nếu quay trái và âm nếu quay phải. Cho vector a và b trong mặt xy, quay từ a đến b sẽ là dương nếu

T= k.(a x b) >= 0

và âm nếu ngược lại (Kết quả khơng đổi đối với hệ tay trái).

Với đa giác lồi, mọi phép quay cĩ cùng chiều, như đa giác A. Nếu đa giác khơng lồi, như trường hợp B, gồm cả hai phép quay. Như vậy, đa giác đơn là lồi nếu và chỉ nếu mọi phép quay cĩ cĩ cùng dấu khi được duyệt.

Giải thuật:

- Duyệt đa giác theo thứ tự các đỉnh để xét việc quay từ cạnh a đến cạnh b tại mỗi đỉnh là quay phải hay quay trái.

.Tính tọa độ theo hướng oz của tích vector a x b T= k(a x b) = ax*by - ay*bx

- Nếu mọi phép quay đều như phép quay tại đỉnh thứ nhất, đa giác lồi. - Nếu cĩ một phép quay khác phép quay tại đỉnh thứ nhất,đa giác lõm.

11. Tính diện tích đa giác

Cơ sở tốn học:

Việc tính một đa giác đơn phẳng bất kỳ xuất phát từ việc tính diện tích tam giác. Diện tích tam giác được tính dựa vào tích hai vector như sau:

S =(1/2) |a x b|

Trong đĩ các vector a, b là các vector cạnh của tam giác.

Với một đa giác n đỉnh, ta cĩ thể phân thành n - 2 tam giác bằng cách từ một đỉnh nào đĩ của tam giác ta vẽ các cạnh nối đến tất cả các cạnh cịn lại của đa giác. Khi đĩ diện tích đa giác bằng tổng diện tích của các tam giác con này. Lấy đỉnh P1 làm chốt, lập (n- 1) vector chốt vector a1=P2 - P1, a2 = P3 - P1, an-1=Pn - P1. Các vector này dùng để tính diện tích mỗi tam giác. Hai cạnh của tam giác i được xác định bởi hai vector ai và ai+1.

Thiết kế hệ thống kiểm tra các quan hệ hình học trang 40

A B P P P P P P

Luận văn tốt nghiệp

Nhưng nếu đa giác là lõm, thì khơng phải mọi đa giác đều cĩ diện tích dương. Do đĩ để hình thành cơng thức tổng quát tính diện tích một đa giác bất kỳ ta phải biến đổi cơng thức tính diện tích tam giác một chút.

Trong cơng thức tính diện tích tam giác trên, thay vì dùng trị tuyệt đối của tích hai vector, ta nhân nĩ với un, chuẩn hướng (độ dài đơn vị) ra của mặt chứa đa giác (nếu đa giác nằm trong mặt xy, un là k). Vector chuẩn hướng ra của mặt chứa đa giác được xác định bằng cách tính tích hữu hướng hai vector cạnh của tam giác. Nhân với chuẩn hướng ra un là để lọc ra diện tích âm và diện tích dương, nĩ khơng ảnh hưởng đến bản thân từng diện tích tam giác. Lúc này diện tích tam giác được tính theo cơng thức:

S = (ax.by-ay.bx)/ 2 (adsbygoogle = window.adsbygoogle || []).push({});

trong đĩ a, b là hai vector cạnh của tam giác. Khi đĩ diện tích của đa giác là:

S = ∑− = 2 1 N i i S

trong đĩ Si là diện tích (cĩ dấu) của tam giác thứ I

Giải thuật:

- i bắt đầu = 2

- Diện tích đa giác = 0 - Lặp lại

{

. Tính diện tích tam giác cĩ 3 đỉnh là : đỉnh 1,đỉnh i, đỉnh i+1 . Diện tích đa giác = Diện tích đa giác + Diện tích tam giác . Inc (i,1)

}

Cho đến khi i=N-1

- Diện tích đa giác = Abs (diện tích đa giác)

Luận văn tốt nghiệp

III.2.CÁC QUAN HỆ HÌNH HỌC TRONG KHƠNG GIAN (3D) 1- Các phép biến hình 3 chiều

Cơ sở tốn học:

Một trong những ưu điểm quan trọng của đồ họa là cho phép dễ dàng tác động lên các đối tượng đồ họa. Tất cả các biến đổi trên đồ họa máy tính đều cĩ thể thỏa mãn một cách tương đối dễ dàng vì các hình ảnh khi đưa vào xử lý đã được số hố, do đĩ nĩ cĩ thể thay đổi dễ dàng bằng các phép biến đổi tốn học. Phép biến đổi hình học thường được dùng là phép biến đổi Affine.

Cĩ hai quan điểm về phép biến đổi, đĩ là: Biến đổi đối tượng.

Biến đổi hệ tọa độ.

Biến đổi đối tượng: là thay đổi tọa độ các điểm mơ tả nĩ theo một quy luật nào đĩ.

Biến đổi hệ tọa độ: sẽ tạo ra một hệ tọa độ mới và tất cả các điểm mơ tả đối tượng sẽ được chuyển về hệ tọa độ mới này. Phần này ta sẽ mơ tả một số phép biến đổi đối tượng.

Phép biến đổi affine 3D biến đổi điểm P(Px,Py,Pz) thành điểm Q: Q = PM

Với P = (Px, Py, Pz), Q = (Qx, Qy, Qz) và M là ma trận biến hình 4x4

Một số phép biến đổi Affine cơ sở, đĩ là: phép tịnh tiến, phép co dãn, phép quay. a/ Phép tịnh tiến: Dịch chuyển đối tượng từ vị trí này sang vị trí khác. Tịnh tiến với các độ dời tx, ty, tz.

Thiết kế hệ thống kiểm tra các quan hệ hình học trang 42

m m m m m m m m m m m m m m m m M = M = 1 0 0 0 0 1 0 0 0 0 1 0 tx ty tz 1

Luận văn tốt nghiệp

b/Phép co dãn: Với hệ số co Sx , Sy, Sz. Ma trận M là

c/Phép quay quanh trục x gĩcA: Tọa độ x của vật thể khơng đổi. Ma trận M là

d/Phép quay quanh trục y gĩc A: Tọa độ y của vật thể khơng đổi. Ma trận M là:

e/Phép quay trục z gĩcA: Tọa độ z của vật thể khơng đổi. Ma trận M là

Thiết kế hệ thống kiểm tra các quan hệ hình học trang 43 (adsbygoogle = window.adsbygoogle || []).push({});

Sx 0 0 0 0 Sy 0 0 0 0 Sz 0 0 0 0 1 M = 1 0 0 0 0 cos(A) sin(A) 0 0 -sin(A) cos(A) 0 0 0 0 1 M = cos(A) 0 -sin(A) 0 0 1 0 0 sin(A) 0 cos(A) 0 0 0 0 1 M = cos(A) sin(A) 0 0 -sin(A) cos(A) 0 0 0 0 1 0 0 0 0 1 M =

Luận văn tốt nghiệp * Tổng hợp các phép biến hình Phép biến hình T1: PQ’ cĩ ma trận M1. Phép biến hình T2 : Q’Q cĩ ma trận M2. Tổng hợp 2 phép biến hình T1, T2 là phép biến hình T: PQ Phép biến hình T cĩ ma trận M = M1 x M2 Giải thuật: - Tính các phần tử của ma trận M.

- Xác định các điểm mới của đối tượng qua phép biến hình. -Vẽ lại đối tượng.

2- Biểu diễn đối tượng 3D

Cơ sở tốn học:

Các đối tượng trong thế giới thực hầu hết là các đối tượng 3D. Việc biểu diễn các đối tượng 3D trên mặt phẳng 2D, bằng máy tính phải tuân thủ các quy luật về phối cảnh… nhằm giúp người xem cĩ ấn tượng hình ảnh gần đúng trong thực tế.

Mơ hình khung dây(Wireframe) dùng biễu diễn các đối tượng 3D đơn giản như các khối đa diện, các mặt mà cĩ thể đơn giản hĩa cách thể hiện nĩ như gồm tập hợp gồm các đỉnh và các cạnh nối liền các đỉnh đĩ. Để lưu trữ mơ hình khung dây cần phải cĩ 2 danh sách:

+ Danh sách đỉnh chứa tọa độ các đỉnh.

+ Danh sách cạnh chứa các cặp đỉnh nối cạnh đĩ.

Cấu trúc dữ liệu mơ tả Wireframe

Typedef struct

{

int NumVerts; int NumEdges; Point3D vert [ ];

Luận văn tốt nghiệp

Point3D edge[ ][2];

} wireframe;

Để vẽ các đối tượng biểu diễn bằng mơ hình khung dây chúng ta chỉ cần vẽ các cạnh trong danh sách cạnh. Tuy nhiên do các đỉnh và cạnh được định nghĩa trong 3D nên để vẽ ta phải chiếu lên mặt phẳng 2D bằng các phép chiếu thích hợp :

+Chiếu mỗi điểm lên 2D.

+Vẽ đoạn thẳng giữa hai điểm chiếu này.

Giải thuật:

+Khởi tạo danh sách đỉnh.

Đưa các đỉnh đa giác vào danh sách đỉnh. +Khởi tạo danh sách các cạnh.

Đưa các cặp đỉnh nối cạnh vào danh sách cạnh. +Khởi tạo phép chiếu.

Tìm các điểm chiếu của các đỉnh wireframe. +Vẽ các cạnh của đối tượng.

Trong chương trình minh họa, chúng ta sẽ dùng mơ hình wireframe để biểu diễn một số đối tượng ba chiều đặc biệt như hình lăng trụ, hình chĩp.

♦ Hình lăng trụ: Cơ sở của hình lăng trụ là một đa giác P nằm trên mặt xy và được quét dọc theo trục z đến một chiều cao H nào đĩ. Nếu đa giác P cĩ n đỉnh, hình lăng trụ cĩ 2*n đỉnh và 3*n cạnh.

Danh sách đỉnh: n đỉnh đầu tiên dành cho đa giác P cĩ tọa độ z bằng 0, n đỉnh kế tiếp cĩ tọa độ z là h.

Danh sách cạnh: n cạnh được chọn đầu tiên thuộc đa giác P sao cho prism.edge[i,1] là i và prism.edge[i,2] là i+1 (ngoại trừ khi i =n thì sẽ là 1 để thành đa giác), tương tự n cạnh kế ở mặt trên của hình trụ. Cuối cùng là n cạnh đứng của hình trụ cĩ prism.edge[i+2n,1] là i và prism.edge[i+2n] là i+n.

♦ Hình chĩp: Đáy của hình chĩp là đa giác P cĩ n đỉnh nằm trên mặt xy. Và đỉnh hình chĩp khơng thuộc mặt xy. Hình chĩp cĩ 2*n đỉnh và 2*n cạnh.

Danh sách đỉnh: n đỉnh đầu tiên dành cho đa giác P cĩ tọa độ z bằng 0, đỉnh kế tiếp (n+1) cĩ tọa độ z là h. (adsbygoogle = window.adsbygoogle || []).push({});

Luận văn tốt nghiệp

Danh sách cạnh: n cạnh được chọn đầu tiên thuộc đa giác P sao cho pyramide.edge[i,1] là i và pyramide.edge[i,2] là i+1 (ngoại trừ khi i =n thì sẽ là 1 để thành đa giác). n cạnh kế cĩ pyramide.edge[i+n,1] là i và pyramide.edge[i+n,2] là n+1.

3- Quan sát vật thể 3D qua hệ tọa độ quan sát

Cơ sở tốn học:

Một đối tượng 3-D được xác định bởi các tọa độ x,y,z,nhưng màn hình thì đối tượng được biểu diễn chỉ với các tọa độ x và y. Để cĩ thể biểu diễn được một đối tượng 3-D lên màn hình, cĩ hai phương pháp để thực hiện vấn đề trên là phép chiếu song song và phép chiếu phối cảnh.

a.Phép chiếu song song:

Loại hình đơn giản nhất của phép chiếu song song là phép chiếu trực giao nhưng lại cĩ rất nhiều ứng dụng trong các bản vẽ kỹ thuật. Với phép chiếu song song, một đối tượng 3-D được thể hiện lên màn hình bằng cách bỏ qua các tọa độ z. Kết quả là một hình 2-D đơn giãn. Như vậy, với trường hợp khối vuơng, hình ảnh thể hiện trên màn hình chỉ là một hình vuơng.

b. Phép chiếu phối cảnh:

Khác với phép chiếu song song, phép chiếu phối cảnh được hình thành từ các tia chiếu khơng song song với nhau mà hội tụ tại một điểm gọi là tâm chiếu. Kích thước của vật qua phép chiếu sẽ được phĩng to hay thu nhỏ phụ thuộc vào khoảng cách giữa tâm chiếu và mặt phẳng chiếu (mặt quan sát). Khoảng cách giữa mắt và mặt quan sát gọi là tầm nhìn.

Trong đĩ:

Ox’y’z’: Hệ trục tọa độ quan sát.

D: Khoảng cách giữa mặt phẳng chiếu và hệ trục quan sát.

Thiết kế hệ thống kiểm tra các quan hệ hình học trang 46

0 ϕ P x z’ y’ x, y z P’ D R θ

Luận văn tốt nghiệp

R: Khoảng cách giữa 2 gốc tọa độ.

θ: gĩc giữa hình chiếu OO’trên mặt phẳng xoy và trục ox. ϕ: gĩc giữa OO’và mặt phẳng xoy.

Mắt đặt tại gốc hệ tọa độ quan sát đặt dọc với trục O’z’hướng vào gốc O. Mặt phẳng quan sát vuơng gĩc với OO’.

Khi thay đổi gĩc θ và gĩc ϕ sẽ dẫn đến việc thay đổi gĩc quan sát vật thể từ đĩ việc thể hiện đối tượng được quan sát sẽ linh động hơn.

Để chuyển đổi điểm P(x,y,z) trong hệ tọa độ Oxyz ra tọa độ (xo,yo,zo) trong hệ tọa độ thứ hai dựa trên x,y,z chúng ta sử dụng cơng thức sau:

(xo,yo,zo,1) = (x,y,z,1) * T với là ma trận biến hình T

xo = -x sinθ + y cosθ

yo = -x cosθsinϕ - y sinθsinϕ + z cosϕ zo = -x cosθcosϕ - y sinθcosϕ - zsinϕ + R

Hình chiếu P’(xc, yc) của điểm P(xo, yo, zo): Do mặt phẳng màn hình vuơng gĩc với trục Oz’ và tâm chiếu là O’.

Ap dụng tính chất tam giác đồng dạng, ta cĩ:

xc = D*xo / zo yc = D*yo / zo

Thiết kế hệ thống kiểm tra các quan hệ hình học trang 47

màn hình P P’ yc màn hình D P P’ z0 xc x0 z’ y’ z’ x’

-sinθ -cosθ sinϕ -cosθcosϕ 0 cosθ -sinθ sinϕ -sinθcosϕ 0 0 cosϕ -sinϕ 0 0 0 R 1 T = (adsbygoogle = window.adsbygoogle || []).push({});

Luận văn tốt nghiệp

Với phép chiếu phối cảnh, tọa độ của điểm chiếu là: P’.xc =D*xo/ zo P’.yc = D*yo/ zo Với phép chiếu song song, mắt đặt ở vơ cực, vì vậy:

Một phần của tài liệu Đề tài: Thiết kế hệ thống kiểm tra các quan hệ hình học trong không gian 2D và 3D ppsx (Trang 37 - 48)