Bề mặt đa giâc

Một phần của tài liệu Nghiên cứu một số phương pháp biểu diễn bề mặt trong không gian 3 chiều (Trang 28)

M ộ t bề m ặt đa giâ c [polygon surface h o ặ c polygon m e sh) lă tập hợp câc cạn h , đỉnh v ă sự k ết n ối câc đa g iâc sao ch o m ồi cạnh lă cạnh ch u n g của nh iều nhất hai đa g iâ c. M ộ t cạnh nối hai đỉnh, m ột đa g iâ c đ ư ợ c tạo bởi m ột ch u ỗ i k h ĩp k ín củ a câc cạnh. M ột cạnh c ó thể lă cạnh ch u n g của hai đa g iâ c , m ột đ ỉn h lă đỉnh ch u n g của ít nhất hai cạnh, tất cả câc cạnh đều lă m ột phần của m ộ t vă i đa g iâ c. M ột lư ới đa g iâ c c ó th ể đ ư ợ c biểu diễn th eo m ột văi câch k h â c nhau, m ỗi câch đều c ó ưu vă nh ư ợc đ iểm riíng. N h iệm vụ của n gư ờ i lập trình lă ch ọ n ra câ ch biểu diễn tốt nhất trong trường hợp cụ thể. M ộ t vă i câ ch b iểu d iễn c ó thể đ ư ợ c sử dụ ng trong m ộ t ch ư ơ n g trình ứ ng d ụng : m ột câch c h o lưu trữ n g o ă i, m ột câch c h o v iệ c sử d ụ n g bín trong vă m ột câch kh âc ch o n g ư ờ i sử d ụ n g tư ơ n g tâc tạo ra lưới.

Nghiín cứa một số phương phâp biíu íiiẽn bề mặt trong không gian ba chiều 28

Hai tiíu thứ c c ơ bản : k h ôn g gian vă thời g ia n , đư ợc sử đụ ng đế đânh giâ c â c c â ch biíu d iễn khâc nhau. C âc thao tâc đặc trưng trín m ột lưới đa g iâc lă tim ra tẩt că câc cạnh ch u n g gắn v ớ i m ột đỉnh, xâ c định câc đa g iâ c c ó chu n g cạn h hoặc ch u n g đỉnh, xâc định câc đỉnh nối ch o m ột cạnh , x âc định câc cạnh cửa m ộ t đa g iâ c , biểu diễn lư ớ i, nhận d ạn g câc lỗi khi biểu d iễn (ch ẳ ng hạn thiếu m ột cạnh, đinh, hoặc đa giâc). N ó i ch u n g m ố i quan hệ giữ a câ c đa g iâ c, đỉnh, vă câc cạnh că n g được biểu d iễn rõ răng thì câc thao tâc s ẽ đ ư ợ c thực h iện nhanh hơn như ng lại đòi hỏi nh iều k h ô n g gian hom.

2.1.1.1. Biểu diền lưói đa giâc

B a c â c h b iểu d iễn lư ới đa g iâ c đ ư ợ c x ĩ t ở đ đy lă : b iểu d iễ n th e o hăm h iệ n , c o n trỏ tớ i danh sâ ch câc đỉnh v ă c o n trỏ tới đanh sâ ch câc cạnh

(F o le y e í a i . ì 994).

T ro n g câ ch biếu diễn theo hăm hiện (explicit representation), m ồ i m ột đa g iâ c đ ư ợ c biểu d iễn bởi danh sâch tọa đ ộ củ a câc đỉnh:

p = ( (X |, y 1, Z |),(x 2, y 2, z 2) , . . , (x m y n ,z n)).

C â c đỉn h đ ư ợ c lưu th e o thứ tự m ă ta s ẽ g ặ p c h ú n g khi đi m ộ t v ò n g q u an h đa g iâ c . C ó câ c cạn h g iữ a c â c đ ỉn h tro n g danh sâ ch v ă g iữ a đỉnh đầu v ă c u ố i. V ớ i m ộ t đ a g iâ c đ ơ n , câ ch b iểu d iễ n n ă y h iệu quả v ề k h ô n g g ia n ; v ớ i m ộ t lư ớ i đa g iâ c sẽ tốn n h iều k h ô n g g ia n hơn vì to ạ đ ộ c ủ a c â c đ ỉn h c h u n g đ ư ợ c liệ t k í hai lần.

V ấn đ ề lă k h ô n g c ó câ ch b iểu d iễn th eo hăm h iện c h o câc cạnh ch u n g v ă câc đỉnh ch u n g . C h ẳ n g hạn, để di ch u y ển m ột đinh m ă tất cả câ c cạnh nối v ớ i đ in h đ ó đều phải biến đổi th eo , ta phải x â c định tất cả câc đa g iâ c c ó c h u n g đỉnh đó. V iệ c tìm k iếm năy đ ò i h ỏ i phải so sânh ba tọa đ ộ củ a m ột

Nghiín CÚĨI một số phương phâp biếu diễn bỉ mặt trong không gian ba chiểu 2 9

đỉnh một đa giâc với câc đa giâc khâc. Câch lăm hiệu quả nhất lă sắp xếp N cặp toạ độ, nhưng quâ trình năy tốn N log2N, vă có thể nguy hiếm vì một đỉnh có thể sẽ có toạ độ khâc đi do quâ trình lăm tròn. Đo đó sẽ không thể thực hiện chính xâc được.

Trong phương phâp năy, lưới đa giâc được biểu diễn dưới dạng tô mău đa giâc hoặc vẽ đường nĩt bín ngoăi cần phải được chuyển đổi câc đỉnh vă cắt câc cạnh của mỗi đa giâc. Mỗi cạnh chung sẽ được vẽ hai lần. Đó chính lă nguyín nhđn vẽ lại trong bút vẽ, thiết bị ghi phim, vă câc hệ hiển thị vector

raster.

Đa giâc được xâc định theo con trỏ tới danh sâch câc đỉnh (pointers to a vertex list), mỗi đỉnh của lưới đa giâc được lưu chỉ một lần trong danh sâeh câc đỉnh V = ((X|, yi Z|),(x2, y2 z2) , . . , (xn, yn zn)).

Một đa giâc được xâc định bởi danh sâch câc chi' số (hoặc câc con trỏ) tới danh sâch câc đỉnh. Chẳng hạn, một đa giâc có câc đỉnh lă 3, 5, 7 vă 10 thì danh sâch câc đỉnh được biểu diễn lă p = (3, 5, 7, 10)

V =(Vj, Vĩ, Vì, v4) = ((X|,Ỵ|,Z|),. . , (X4, y4. Z4))

^ Pi = ( 1 .2 .4 ) 1 1, 2, 3 ,4 lă chi số câc đinh p2 = (4 ,2 ,3 ) J

V4

Hình. 2.1. Lưới đa giâc xâc định bằng câc chi số trong danh sâch

Một ví dụ của câch biểu diễn năy được chỉ ra trong hình 2.1 có một văi ưu điểm hơn so với câch biếu diễn đa giâc theo hăm hiện. Mỗi một đỉnh chỉ được lưu một lần, như vậy tiết kiệm được không gian. Hơn nữa, tọa độ của câc đỉnh có thể được thay đổi một câch dễ dăng. Tuy nhiín, vẫn khó khăn để xâc định câc đa giâc có chung cạnh; câc đa giâc có chung cạnh vẫn được ví

Nghiín cứu một số phương phâp biếu diễn bề mặt trong không gian ba chiểu 30

hai lần cạnh ch u n g đó. Ta có thể giải qu yết c â c vấn đề năy b ăn g câch b iểu d iễ n câc cạnh th eo hăm h iện , như trong ph ư ơ ng phâp sau :

K hi m ột đa giâ c đư ợc x âc định bởi co n trỏ tới danh sâch câc cạnh

(pointers to a ỉl edge list), ta c ó danh sâch câc cạnh V . T rong p h ư ơ n g phâp n ă y , biểu diễn đa g iâc th eo danh sâch câc co n trỏ nhưng k h ô n g phải trỏ tới đanh sâch câc đỉnh m ă lă trỏ tới danh sâch câc cạnh, m ỗi cạnh đ ú n g m ột lần. M ồ i m ột cạnh trong danh sâch câ c cạnh trở tới hai đỉnh trong danh sâch câc đ ỉn h đí x â c định m ột cạnh, vă m ột hoặc hai đa g iâ c mă cạnh đó th uộc về.

N h ư v ậ y , m ô tả đa g iâ c dưới đạng p = ( E |, . . , E„) vă m ột cạnh đư ợ c m ô tả : E = (V/, v 2 ,P i ,P ĩ). Khi m ột cạnh chỉ th u ộc vă o m ột đa g iâ c , P] h o ặ c p 2 sẽ lă rỗng. H ình 2.2 c h o ta v í dụ v ề câch biếu diễn năy.

V = (V/, Vị, Vj, v4) = ((X |,yt,Z|),. ., (X4, y* 2 4)) E , = ( K/ . V2.P1, l ) E2 = ( Ka Vì, P2, l ) E3 = (V3, v], p], Ằ) v ' ^ 1 ' E 4\ / k e 4 = ( ^ . Vh Pu P i) Es = (V4, Vị, Pu X) P1 = (E |,E 4, Es) P2 = (E2, e3,e4)

Hình 2.2. L ư ớ i đa giâc xâc đ ị n h bới danh sâch câc cạnh cho mỗi đa giâc ( X biểu diễn giâ trị rỗng).

K hi biếu d iễn đa g iâ c bởi câc cạnh, thay b ằ n g câch b iểu d iễn tất c ả câc đ a g iâ c thì trânh đ ư ợ c câc ph ĩp cắt, c h u y ển đ ổi v ă ch u y ển đổi phđn hình. V iệ c tô m ău đa g iâ c cũ n g đ ư ợ c thự c hiện dễ dăng. T rong m ột vă i trường hợp. khi m ô tả cấu trúc của m ột đối tư ợ n g d ạn g tổ o n g 3 D , m ột s ố cạnh sẽ lă cạnh c h u n g củ a hai đa g iâ c. T rong trường hợp năy, khi m ô tả m ột cạnh c ó thể m ở rộ n g ra bao g ồ m m ột số đa giâc: E = ( V |, v 2 , P i , P2 , Pn)-

Nghiín cứu một số phương phâp biếu diễn bể mặt trong không giơn ba chiểu 31

T ro n g ba câch biểu diễn năy (đa giâc theo hăm hiện, con trỏ tới danh sâch câc đ in h, con trỏ tới danh sâch câc cạnh) k h ô n g dễ dăng x â c định xem n h ữ n g cạnh n ăo trùng v ớ i m ột đỉnh; tất cả câc cạnh đều phải đ ư ợ c k iểm tra. T ất n h iín , câc th ô n g tin c ó thể đư ợ c th ím v ăo

đí xâc định câc m ối quan hệ .

Khi b iểu d iễn dữ liệu ch o bề m ặt lưới đa g iâ c h o ặ c ch o m ột vật thể ba ch iều nói ch u n g tron g m ây tính, nín nhập dữ liệu thănh m ột

f i l e riíng. Đ iề u năy rất tiện lợi khi ta m u ốn

thay đổi vật th ể thi chỉ cần thay đổi dừ liệu ở Hình 2.3 : Biều diễn mặt cầu

băng lưới đa giâc

file riín g năy. N g o ă i ra, câch tô ch ứ c dừ liệu

thănh f i l e riín g năy c ò n giảm đ ư ợ c bộ n h ớ ch o ch ư ơ n g trình vă thự c hiện rất tố t v ớ i cả vật th ể p h ứ c tạp. T ron g C A D , câ c f i l e năy đê c ó định d ạn g sẵn.

2.1.1.2. Phương trình mặt phẳng

K hi lăm v iệ c v ớ i n h iều đa g iâ c h oặc lư ớ i đa g iâ c , ta th ư ờ n g cần phải b iết tớ i p h ư ơ n g trình của m ặt phẳn g chứ a đa g iâ c đó. T ron g m ộ t văi trường hợp, c â c p h ư ơ n g trình năy đ ư ợ c b iết th eo hăm ẩn qua p h ư ơ n g phâp x â c định đa g iâ c . N ế u k h ô n g b iết đư ợ c ph ư ơ n g trình, ta có thể sử d ụ n g to ạ đ ộ của ba đỉnh đ ể x â c đ ịn h m ặt phẳng.

a) Phương trình hăm ẳn

P h ư ơ n g trình m ặt ph ẳn g c ó thể đư ợ c b iểu diễn th eo d ạn g sau :

F (x , y , z ) = A x + B y + C z + D = 0 ( 2 .1 )

T ro n g đ ó (x ,y ,z ) xâ c định m ột đ iểm tuỳ ý trong m ặt ph ẳng, c â c hệ số A , B , c v ă D lă câ c h ằn g số m ô tả đặc điểm k h ô n g gian củ a m ặt phẳng.

Nghiín cứu một sồ phtrơng phâp biíu diễn bề mặt trong không gian ba chiều 32

Cho ba điểm không thẳng hăng P |, p2, P3, trong mặt phẳng ta có thể xâc định câc giâ trị A, B, c vă D băng câch giải hệ phương trình tuyến tính sau:

A B ( ; 1 1 1

— .V + — V + — 21 5 ^

n ' n I)

Ket quả được :

A = V ,U : - * , ) + ,M - | -

H = r ,( x : - -V,) + z : i x , - x t ) + r 3( x, - x 2 ) ( '= x \0 ' ; - y>) + -Y: ( ) \ - y t ) + x >0 ’| “ .V;)

D = - x , ( y _ , z ; - y , z : ) - x , ( y , Z ị - y , z , ) - x , ( y , z 2 - y ; i

Mặt phắng của phương trình (2.1) chia không gian ba chiều thănh hai phần riíng biệt, một bín chứa câc điểm có toạ độ (x,y,z) mă F(x,y,z) > 0 vă phần còn lại chứa câc điểm có toạ độ (x,y,z) mă F(x.y,z) < 0.

Để xâc định dấu của một phần mặt phẳng, người ta thường chọn câc điểm đặc biệt (thư ờ ng lă g ố c = (0,0,0) nếu nó không nằm trong m ặ t p h ắ n g )

vă thay thế toạ độ văo F(x,y,z). Chẳng hạn, mặt phẳng 2x-3y+5z+7 = 0 chia không gian 3D thănh hai phần. Phần mặt phẳng chứa điểm gốc tọa độ o (0,0,0) sẽ chứa tất cả câc điểm (x,y,z) có F(x,y,z) > 0

Hướng của mặt phẳng có thể được mô tả bởi phâp tuyến cùa mặt phẳng. Ta tính được bằng tích của câc vector P]P2X P|P3 (hoặc P2P3 X P2P1, V.V..Ạ

Vector phâp tuyến năy có ba thănh phần A, B, c xâc định bởi phương trình (2.3), nếu tích vector năy lă 0, ba điểm năy thẳng hăng vă không xâc định được mặt phẳng. Nếu có thể được, ta dùng đỉnh khâc để thay thế.

(2 .2 )

}(2 3 )

Nghiín cứu một so phương phâp biếu diễn bề mặt trong không gian ba chiểu 33

Cho một tích câc vector khâc 0, ta có thể xâc định D bằng câch thay thế phâp tuyến [A, B, C] vă một trong ba điểm văo phương trình (2.1 ).

Khi đă xâc định được phương trình của mặt phẳng bằng câch sử dụng toạ độ của tất cả câc đ ỉ n h , ta có thể đânh giâ sự không đồng phắng của đa giâc bằng câch tính câc khoảng câch từ mặt phẳng tới mồi đỉnh. Khoảng câch d tới đỉnh có toạ độ (x,y,z) lă :

Ax + By + Cz + D

d = — ---— --- — (2.4)

/ Ả 2 + B7T c 2

Khoảng câch năy có thể dương hoặc đm, tuỳ thuộc văo vị trí của điím đó đối vị trí mặt phang. Neu đinh ở trín mặt phang thì d = 0. Tất nhiín, níu chỉ đí xâc định xem điểm đó nằm ở phía bín năo đối với mặt phẳng, ta chỉ cần xĩt dấu của d, như vậy việc chia cho căn lă không cần thiết vă ta chỉ cần chủ ý đến dấu biểu thức tử số của phương trình (2.4).

Ta cũng thấy rằng, phương trình của mặt phẳng lă không duy nhất; khi nhđn thím với hằng số k sẽ lăm thay đổi phương trình, nhưng không lăm thay đổi mặt phẳng. Tốt nhất lă nín lưu trữ câc hệ số của mặt phẳng với phâp tuyến của nó; chẳng hạn có thể lưu nghịch đảo của độ dăi của vector phâp tuyến.

k = --- --- (2.5)

/ Ê W

Sau đó, khoảng câch được tính dễ dăng từ phương trình (2.4) nếu mẫu số lă 1.

b) Xâc định điểm trín mặt phẳng

Giả thiết rằng mặt phẳng được xâc định bởi ba điểm không thẳng hăng Pị, P2 , vă P3. Một điểm P(x,y,z) nằm trín mặt phẳng, thì vector Pi p phải lă

Nghiín cứu một sổ phương phâp biếu diễn bỉ mặt trong khăng gian ba chiều 34

r (2 .8 )

kết hợp tu yến tính củ a v ecto r v ă P|P3. N ó i m ột câ ch k h âc, tồn tại hai số thực u V sao cho:

P| p = w P ,P 2 + v P , P 3 (2 .6 )

như vậ y :

X - Xị = 1l(x: - Jfj) + V’ ( * 3 - Xị) y - y t = u ( y 2 +

z - Zị - u(Zỵ ~ 2, ) + v(z-ì - 2, ) CÓ thể viết lại như sau :

X = ( l - u - v)jf J + ux2 + wr,

y - (1 - M - v)_y, + uy, + yỳ z = { \ - u - v)Zị + uz: + vz-ị

trong đó u v ă V lă hai số thực.

2.1.2. Bề m ăt bđc hai• •

B ề m ặt b ậc hai đ ư ợ c sử d ụ ng trong m ột lớp câc đối tư ợ n g b a o g ồ m bề m ặt hìn h cầu , e llip so id , hình x u y ến , paraboloid, v ă h yp erb oloid .

2.1.2.1. Hình cầu

M ộ t b ề m ặt hình cầu có bân kính r vă tđm ở g ố c đ ư ợ c x â c định lă tập h ọp g ô m câ c đ iế m ( x ,y ,z ) th oả m ên ph ư ơ n g trình:

X2 + y 2 + z 2 = r2 (2.9)

Ta có thể mô tả bề m ặt hình cầu theo dạng tham số, sử dụng góc v ĩ độ (ị) vă góc kinh độ 0 (H ình 2.4) băng hệ phương trình (2.10).

Nghiín círu một số phương phâp biểu diền bể mặt trong không gian ba chiểu 3 5

Hình 2.4 : Tham số (ị) vă 8 sử dụng để biểu diễn hình cầu

X = r cos<ị) COS0 y = r cos<Ị> sinG z = r sinệ -n/2 < (Ị) < n/2 -71 < 8 < n ( 2 .1 0 ) 2.1.2.2. Ellipsoid

Một bề mặt Ellipsoid có tđm ở gốc với ba trục a, b, c (hình 2.5) được mô tả bởi tập hợp câc điểm (x,y,z) thoả mẫn phương trình (2 .1 1):

( 2 .1 1 )

\ ữ j

+ = 1

Biểu diễn dưới dạng tham số của Ellipsoid theo góc vĩ độ (ị) vă góc kinh độ 0 (hình 2.5) qua hệ phương trình (2.12) : X = a.cosộ.cosG y = b.cos<Ị>.sinQ z = c.sinộ -n/2 < ệ < 71/2 - 7 Ĩ < 0 < 7 1 ( 2 .1 2 )

Nghiín cint một số phương phâp biểu diễn bề mặt trong không, giơn ba chiều 3 6

2.1.2.3. Hình xuyến

H ình xu y ến ỉă m ột bề m ặt đ ư ợ c tạo ra bằn g câch quay m ộ t đ ư ờ n g tròn h o ặ c m ột đ ư ờ n g bậc hai quanh m ột trục xâc định. Ph ư ơng trình c ủ a m ộ t hình x u y ế n trong hệ toạ đ ộ Đ ề C âc (D escartes) như sau:

' - • " U - t ỉ

+ = 1 (2.13)

T ron g đó r lă bân kính đ ư ờ n g biín n g o ă i. T rong nh iều ứ n g d ụ n g , hình x u y ế n đư ợ c tạo ra bằng câ ch sử d ụng m ột đ ư ờ n g tròn (a = b) nh ư tron g h ìn h 2 .6

B iể u diễn th eo tham số của hình xu y ến th eo câc g ó c v ĩ độ (ị) v ă g ó c k in h đ ộ 0 nh ư sau : X = a.cos(Ị>.cos0 y = b.cosộ.sinO z = c.sin<t> -K < (Ị) < n -71 < 8 < n C hú ý rằng g ó c v ĩ độ <Ị> đư ợ c m ở rộng từ -71 tới 7t (*. y. z) Mật phẳniỊ xy

Hình 2.6. Một hình xuyến có tđm tại gốc toạ độ.

(2.14)

Nghiín cứu một số phương phâp biếu diễn bể mặt trong không gian ba chiều 37

2.1.2.4. Be mặt tròn xoay

B ề m ặt tròn x o a y đư ợ c tạo ra khi quay tròn m ột đ ư ờ n g c o n g phẳng quanh m ộ t trục c ố định, g iả sử lă trục O z. Đ ư ờ n g c o n g ph ẳng đư ợ c biểu diễn bằng p h ư ơ n g trình tham số C (v) = (x (v ), z (v )), trong đó V b iến đ ổ i trong m ột kh oản g n ăo đó.

Khi ch iếu m ột đ iểm trín đ ư ờ n g c o n g c x u ố n g mặt ph ẳng xO y thì g iâ trị toạ đ ộ đư ợ c biểu diễn th eo tham số u {biểu diễn g ó c q u a y của hình chiếu đổi với g ổc toạ độ). L úc đ ó, m ồ i đ iểm (x (v ), z (v )) th uộc c được quay x u n g quanh m ột trục to ạ đ ộ th eo tham số u. Khi đ iểm (x (v ),0 ,z (v )) đư ợ c quay m ột g ó c u

quanh trục O z s ẽ tạo thănh m ột đư ờn g m ới c ó g iâ trị ( x ( v ) c o s ( h ) , x(v)sin (w ), z (v )). N ế u quay đủ m ột v ò n g quanh trục sẽ tạo thănh bề mặt, g ọ i lă bề m ặt tròn x o a y (H ình 2.7,0).

K hi b iếu d iễn m ặt tròn x o a y , ta chỉ cần b iểu d iễn x ư ơ n g của m ặt tròn x o a y , số phần quay vă câc th u ộc tính của nó.

2.1.3. Bề m ặt cỏ quỉ luật

B e m ặt c ó quy luật đ ư ợ c tạ o ra bằng câch kết n ố i câ c đ iểm tư ơ n g ứng trín hai b ề m ặt c o n g C (u ) vă D(«) bằn g câ c đ ư ờ n g thẳng. Đ ặ c đ iểm ch ín h củ a bề m ặt n ăy lă v ớ i m ột đ iểm bất kỳ P (m,v) trín bề mặt, c ó ít nhất m ột đoạn

Nghiín cứu một số phương phâp biếu diễn bề mặt trong không gian bơ chiểu 38

thăng đi qua vă nằm hoăn toăn trong bề mặt (hình 2.8). Xĩt một đoạn u = Uị,

nối hai điểm Cị vă D| trín đường cong C(w) vă D(w), riíng biệt. Phương trình của đoạn thẳng năy có thể được viết như sau:

P(w,- , v ): Cj + V (Dj - Ci) (2 .1 5 )

Trong đó V ỉă tham số dọc theo đoạn thẳng. Tổng quât hoâ phương trình (2.15) cho một đoạn thẳng bất kỳ sẽ được phương trình tham số cho hề mặt có

Một phần của tài liệu Nghiên cứu một số phương pháp biểu diễn bề mặt trong không gian 3 chiều (Trang 28)

Tải bản đầy đủ (PDF)

(109 trang)