Tải bản đầy đủ (.pdf) (55 trang)

Mô hình bề mặt và đường cong trong đồ hoạ máy tính

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 (1.2 MB, 55 trang )

Mục lục
CHƯƠNG 1 ..................................................................................................................3
CÁC KHÁI NIỆM CHUNG..........................................................................................3
1.1. Khái Niệm ..........................................................................................................3
1.2. Mục Đích Và Các Biện Pháp Thể Hiện ...............................................................3
1.2.1. Mục Đích.....................................................................................................3
1.2.2. Các Biện Pháp Thể Hiện ..............................................................................3
CHƯƠNG II: ................................................................................................................5
CÁC MÔ HÌNH ĐƯỜNG CONG TRONG ĐỒ HỌA ...................................................5
2.1. Đường Cong Đa Thức Bậc Ba Tham Chiếu ........................................................5
2.2. Đường Cong Hermite..........................................................................................6
2.3. Đường Cong Bezier ............................................................................................7
2.4. Đường Cong B-Spline ........................................................................................8
CHƯƠNG III: .............................................................................................................15
CÁC MÔ HÌNH BỀ MẶT TRONG ĐỒ HỌA.............................................................15
3.1. Bề Mặt Đa Giác ................................................................................................15
3.1.1. Biểu Diễn Lưới Đa Giác ............................................................................15
3.1.2. Phương Trình Mặt Phẳng ..........................................................................17
3.2. Bề Mặt Bậc Hai ................................................................................................20
3.2.1. Hình Cầu....................................................................................................20
3.2.2. Ellipsoid ....................................................................................................21
3.2.3. Hình Xuyến ...............................................................................................22
3.3. Mặt Cong Bậc Ba .............................................................................................23
3.3.1. Bề Mặt Bậc Ba Hermite .............................................................................23
3.3.2. Bề Mặt Bậc Ba Bézier................................................................................24
3.3.3. Bề Mặt Bậc Ba B-spline.............................................................................25
CHƯƠNG VI: .............................................................................................................26
ỨNG DỤNG CỦA VIỆC SỬ DỤNG BỀ MẶT TRONG 3DS MAX..........................26
4.1. Giới Thiệu Về Phần Mềm 3ds Max...................................................................26
4.2. Giới Thiệu Chung Về MAXScript ....................................................................35
4.2.1.Tổng Quan Về MAXScript .........................................................................35


4.2.2. Sử Dụng Các Tài Liệu Mô Tả MAXScript .................................................37
4.2.3. Về Visual MAXScript:...............................................................................38
4.3. Mô Phỏng Ứng Dụng Trên 3ds Max: Xây Dựng Trò Rubic Trên 3ds Max........40
4.3.1. Giới Thiệu Chung ......................................................................................40
4.3.2. Các Kiến Thức Liên Quan..........................................................................41
4.3.3. Xây Dựng Trò Chơi ...................................................................................43

-1-


LỜI NÓI ĐẦU

Trong thời đại hiện nay với sự phát triển của các ngành khoa học kĩ thuật, đặc
biệt là sự phát triển của công nghệ thông tin và ứng dụng của nó trong các ngành
khác nhau. Chẳng hạn như trong ngành xây dựng, hay chế tạo máy, để đạt được
kết quả của công việc thì con người phải làm thí nghiệm để có thể biết được hình
dạng, kích thước của nó, nhưng việc làm mô hình ngoài thực tế lại gây tốn kém
rất nhiều về thời gian lẫn công sức. Do vậy mô hình xây dựng thế giới hiện thực
trong không gian ảo được ứng dụng để tạo ra những mô hình giống như thật
nhưng trong môi trường máy tính, giúp con người quan sát được hình dạng và
hoạt động của sản phẩm mà mình muốn tạo ra trong hiện thực. Khi xây dựng mô
hình thì bề mặt là phần quan trong nhất của một mô hình nó vừa mô tả bề mặt
của vật vừa thể hiện được các thuộc tính, tính chất của vật. Để giúp các bạn hiểu
thêm về mô hình bề mặt trong đồ hoạ tôi xin giới thiệu sơ lược về các mô hình bề
mặt và đường cong trong đồ hoạ máy tính
Do thời gian nghiên cứu có hạn do vậy không thể tránh được những sai xót.
Em mong nhận được sự đóng góp ý kiến của các thầy, cô và bạn bè, để những đề
tài sau của em được hoàn thiện hơn. Em xin chân thành cảm ơn sự hướng dẫn tận
tình của cô giáo: Trần Hồng Nhâm đã giúp đỡ em hoàn thành đề tài đúng thời
hạn.


-2-


CHƯƠNG 1
CÁC KHÁI NIỆM CHUNG

1.1. Khái Niệm
Đường cong (Curve) là một quỹ đạo chuyển động của một điểm trong
không gian. Trong đồ họa thì đường cong thường được dùng để mô tả thế giới
thực và góp phần tạo nên các mặt cong
Bề mặt (Surface) là tập hợp toàn bộ các phần bao quanh bên ngoài của
một đồ vật, công cụ hoặc bất kì một dụng cụ, thiết bị mà con người có khả năng
quan sát được

1.2. Mục Đích Và Các Biện Pháp Thể Hiện
1.2.1. Mục Đích
Đường cong Thường được dùng để thể hiện các đường cong mềm và kết
hợp để tạo nên các mặt cong trong việc mô tả thế giới thực: vật dụng, núi non..
hay xây dựng nên các thực thể đang được thiết kế
Bề mặt và các phương pháp biểu diễn chúng là kỹ thuật đồ hoạ đóng vai
trò rất quan trọng trong việc xây dựng các mô hình trong thiết kế, sản xuất và các
ứng dụng khác. Từ vật dụng hàng ngày như giầy dép, cốc,… đến các sản phẩm
đòi hỏi độ phức tạp cao như vỏ xe ô tô, vỏ tầu…
1.2.2. Các Biện Pháp Thể Hiện
a) Đường cong
Đường cong là các đối tượng cơ bản thường là kết quả của tiến trình thiết
kế và các điểm đóng vai trò là công cụ để kiểm soát và mô hình hóa đường cong.
Cách tiếp cận này là cơ sở của lĩnh vực thiết kế mô hình học của máy tính có các
cách biểu diễn đường cong sau:

 Tường minh (Explicit functions):
y  f x , z  g x

 Không tường minh (Implicit equations):
f  x, y , z   0

 Biểu diễn các đường cong tham chiếu (Parametric representation):
-3-


x  xt , y  yt , z  z t  trong đó t  01

b) Bề mặt
Với các công nghệ cũ biểu diễn bề mặt ba chiều được thông qua việc sử
dụng nhiều các hình chiếu của đối tượng dưới các góc chiếu khác nhau xung
quanh đối tượng cần quan sát. Như vậy thực tế bề mặt được biểu diễn bởi chỉ các
lưới tập các đường cong phẳng trên mặt phẳng tham chiếu tạo cho người sử dụng
cảm giác ba chiều.
Trong việc thể hiện bằng đồ hoạ máy tính, việc biểu diễn bề mặt được phát
triển với việc sử dụng các mô hình toán học ba chiều. Điều đó mang lại nhiều ưu
điểm như:
- Cho phép phân tích sớm và dễ dàng các đặc tính của bề mặt, đường cong
của bề mặt và tính chất vật lý của bề mặt.
- Cho phép xác định diện tích, xác định vùng của bề mặt hay các moment
của mặt.
- Với khả năng tô mầu bề mặt trong thực tế cho phép kiểm tra thiết kế đơn
giản.
- Và cuối cùng là việc tạo ra các thông tin cần thiết cho việc sản xuất và tạo
ra bề mặt như code điều khiển số được dễ dàng thụân tiện hơn nhiều so với
các phương pháp cổ điển.

- Thông thường người ta sử dụng hai kỹ thuật cho việc mô tả bề mặt bao
gồm:
+ Thứ nhất: Dựa vào việc xây dựng và tạo bề mặt trên những điểm dữ liệu
+ Thứ hai: Dựa trên việc xây dựng nền bề mặt phụ thuộc vào biến số có
khả năng thay đổi một cách trực diện thông qua các tương tác đồ hoạ. Bề
mặt được xây dựng theo phương pháp này gọi là phương pháp tổng hợp
hay còn có một thuật ngữ khác là hỗn hợp

-4-


CHƯƠNG II:
CÁC MÔ HÌNH ĐƯỜNG CONG TRONG ĐỒ HỌA
2.1. Đường Cong Đa Thức Bậc Ba Tham Chiếu
Thế nào được gọi là đường cong bậc ba: Đường cong đa thức bậc ba phải đảm
bảo là đường không gian với 3 trục tọa độ x,y,z. Tránh những tính toán phức tạp
và những phần nhấp nhô ngoài ý muốn xuất hiện ở những đường đa thức bậc cao.
Sau đây là một số cách mô tả đường cong đa thức bậc ba
Công thức mô tả:
 Tường minh: y  f 3  x , z  g 3  x 
 Không tường minh: f 3  x, y, z   0
 Biểu diễn các đường cong tham biến:
x  f 3 u , y  f 3 u , z  f 3 u 

trong đó u  01

Theo Lagrange
x  a1  b1u  c1u 2  d1u 3
y  a 2  b2 u  c2 u 2  d 2 u 3


z  a3  b3u  c3 u 2  d 3u 3

Hình 2.1: Đường cong đa thức bậc ba
Đây là phương trình với 12 ẩn số
Với 4 điểm p 0 , p1 , p 2 , p 3 phương trình trên được xác định (vì 4 điểm thì xác
định được một đường cong trong không gian)

Mỗi điểm ở đây có các giá trị là:

 x0 
 x1 
 x2 
 x3 






p 0   y 0  p1   y1  p 2   y 2  p 3   y3 
 z 0 
 z1 
 z 2 
 z 3 

Giải hệ 12 phương trình trên ta thu được các ẩn số từ a1 .....d 3

-5-



Nhận xét : Khi có sự thay đổi một chút về đường cong sẽ dẫn đến ta phải giải
lại hệ 12 phương trình trên để tính các hệ số của đường cong việc này hết sức
phức tạp do đó làm chậm quá trình sử lý của máy tính.
2.2. Đường Cong Hermite
Phương pháp Hermite dựa trên cơ sở của cách biểu diễn Ferguson hay Coons
năm 60. Với phương pháp của Hermite đường bậc ba sẽ được xác định bởi hai
điểm đầu và cuối cùng với hai góc nghiêng tại hai điểm đó
Công thức biểu diễn:
p  pu   k 0  k1u  k 2 u 2  k 3u 3

p u    k i u i Với i  N, k i là các tham số chưa biết

Độ dốc đường cong là p , u  được tính như sau
p'  p' u   k1  2k 2 u  3k 3u 2

Khi có hai điểm mút p0 và p1 ta có hai điểm dốc p'0 và p'1 (xét trên đoạn [ 0,1])
p0 u  0  k 0
p ' 0 u  0   k1
p1 u  1  k 0  k1  k 2  k 3
p '1 u  1  k1  2k 2  3k 3

Hình

2.2:

Đường

cong

Hermite

Hay
k 0  p0 và k1  p' 0
k 2  3 p1  p0   2 p' 0  p'1 và k 3  2 p0  p1   p' 0  p'1

Khi đã có k 0 , k1 , k 2 , k 3 thay vào:

-6-


p  p u  = k 0  k1u  k 2 u 2  k 3u 3 =















p 0 1  3u 2  2u 3  p1 3u 2  2u 3  p ' 0 u  2u 2  u 3  p '1  u 2  u 3



Dạng ma trận ta có

1
0
u3 
 3

2





p  p u   1 u u 2

0 0
0   p0 
0 1
0   p1 
3  2  1  p ' 0 
 
2 1
1   p '1 

Theo phương trình này thì sự thay đổi các góc nghiêng (thay đổi p 0 p1 ) sẽ dẫn
đến sự thay đổi hình dạng của đường cong
2.3. Đường Cong Bezier
Việc sử dụng điểm với các vector kiểm soát được độ dốc của đường cong
tại những điểm mà nó đi qua. Tuy nhiên không được thuận lợi cho việc thiết kế
tương tác, không tiếp cận với các độ dốc của đường cong bằng giá trị số
(Hermite).
Paul Bezier, nhân viên hãng RENAULT vào năm 1970 đã đi đầu trong

việc ứng dụng máy tính cho việc xây dựng các bề mặt. Hệ thống UNISURE của
ông được ứng dụng trong thực tế vào năm 1972. Ông đã sử dụng đa giác kiểm
soát đường cong tại những đỉnh của nó và tiếp tuyến tại các đỉnh đó
( p0 , p1 , p2 , p3 )
Trong đó các đỉnh p0 , p3 tương đương với p0 , p1 trên đường Hermite các điểm
p1 , p 2 được xác định bằng 1/3 độ dài của vector tiếp tuyến tại p0 , p3

Vì p1 , p 2 được xác định bằng 1/3 độ
dài của vector tiếp tuyến tại p 0 , p3 nên ta có
p ' 0  3( p1  p 0 )

Hình 2.3: Đa giác kiểm soát Bezier

p ' 3  3( p 3  p 2 )















p  p u   p 0 1  3u 2  2u 3  p 3 3u 2  2u 3  p ' 0 u  2u 2  u 3  p ' 3  u 2  u 3


-7-
















p  p u   p 0 1  3u  3u 2  u 3  p1 3u  6u 2  3u 3  p 2 3u 2  3u 3  p 3u 3

Dạng ma trận ta có



p  p u   1 u u 2

0
0
1
 3 3

0
u3 
 3 6 3

 1 3  3



0  p 0 
0  p1 
0  p 2 
 
1  p3 

Ưu điểm:
Dễ dàng kiểm soát hình dạng của đường cong hơn vector tiếp tuyến tại
p ' 0 và p'1 của Hermite

Nằm trong đa giác kiểm soát với số điểm trung gian tùy ý (số bậc tùy
ý) có số bậc=số điểm kiểm soát-1
Đi qua điểm đầu và điểm cuối của đa giác điểm kiểm soát, tiếp xúc
với cặp hai vector đầu cuối đó
2.4. Đường Cong B-Spline
a) Đường cong bậc ba Spline
Trong công thức Bezier chúng ta sử dụng hàm hợp liên tục để xác định
điểm kiểm soát tương đối. Với các điểm nội suy thì mức độ tương đối sẽ khác
nhau mà trong đó một chuỗi các phần tử nhỏ sẽ kết hợp với nhau tạo ra đường
cong đa hợp. Theo tính toán đường cong bậc ba là đa thức bậc thấp nhất có thể
biểu diễn một đường cong trong không gian và chuỗi điểm Hermite sẽ phù hợp
nhất đối với việc xây dựng nên đương cong đa hợp này.

Việc yêu cầu người sử dụng đưa vào các vector tiếp tuyến tại mỗi điểm
trong tập hợp các điểm là cực kỳ bất tiện cho nên thường trong các đường bậc ba
đa hợp ta sửdụng các điều kiện biên liên tục trong phép đạo hàm bậc một và bậc
hai tại điểm nối giữa, đường cong xác định như trên gọi là đường cong Spline
bậc ba với phép đạo hàm liên tục bậc hai. Giá trị đạo hàm của đường cong sẽ xác
định độ cong mà tại mỗi điểm nút và nó cũng đưa ra điều kiện biên cho mỗi đoạn
trên đường cong. Vậy đừơng bậc ba Spline có ưu điểm là không xác định độ dốc

-8-


của đường cong tại các nút nhưng nhược điểm của nó là chỉ tạo ra sự thay đổi
toàn cục khi tắt hay đổi vị trí của điểm..
Đường cong Spline đi qua n điểm cho trước mà mỗi đoạn là đương cong
bậc ba độc lập có độ dốc và độ cong liên tục tại mỗi điểm kiểm soát hay điểm
nút. Với n điểm ta có n-1 với mỗi đoạn gồm 4 vector hệ số hay 4(n-1) cho n-1
đoạn và 2(n-1) điều kiện biên và n-2 về điều kiện về độ dốc cùng độ cong
Để xây dựng nên đường cong có n điểm nút ta có một dãy các giá trị tham
số ta gọi là vector nút
u0 .........u n1 trong đó ui 1  u i

Cần lựa chọn tại mỗi nút , cách đơn giản nhất là theo cách đơn điệu có
nghĩa là với giá trị 0 tại điểm đầu ta tăng lên 1 ở điểm tiếp theo, tuy vậy phương
pháp này dẫn đến độ cong không mong muốn ở các điểm vì vậy việc tham số hóa
sẽ đưa vào chiều dài, nhưng phương pháp này cũng không được chính xác khi
mà đường cong chưa xác định chiều dài. Tuy nhiên thông thường người ta sử
dụng việc tích lũy của các dây cung với:
u0  0 và ui 1  ui  d i 1 trong đó d i là khoảng cách giữa hai điểm pi 1 và pi

Trong các trường hợp đường cong có bậc lớn hơn ba có thể dùng cho

đường Spline.
Thông thường đường Spline bậc n sẽ được xây trên các phần nhỏ liên tục
của các điểm độc lập. Việc kết hợp các đoạn cong Hermite bậc ba để mô tả một
đường cong mềm theo kiểu phân đoạn Spline là phương pháp đơn giản nhất hay
còn gọi là phương pháp Hermite nội suy. Với phương pháp này thì tham biến u i
cho mỗi đoạn cong i của tập các đoạn cong Hermite sẽ biến đổi trong khoảng từ
0 đến 1 và luôn tồn tại đạo hàm bậc nhất của các đoạn cong tại các điểm nối.
Phương trình cho mỗi đoạn cong được sử dụng lúc này là phương trình đường
cong bậc ba Hermite:

-9-




p  p u   1 u u 2

1

3  0
u
 3

2



0 0
0   p0 
0 1

0   p1 
3  2  1  p ' 0 
 
2 1
1   p '1 

p n 1
p n 2

p1

p0

Hinh 2.4: Phân đoạn đường cong Spline-Hermite
Theo Hermite các đoạn là đường cong, tính liên tục của đạo hàm bậc hai tại
các điểm nối có thể dễ dàng đạt được bằng cách đặt p"i 1 u i 1  1 là đạo hàm bậc
hai tại điểm cuối của đoạn i-1 bằng với p"i ui  0 đạo hàm bậc hai tại điểm đầu
của đoạn thứ i.
p"i 1 1  p"i 0 

Phương trình đường cong:
p i u   k 0i  k1i u  k 2i u 2  k 3i u 3

Lấy đạo hàm bậc hai sẽ là:
p"i u   2k 2 i  6k 3i u
p"i 1 1  p"i 0  nên 2k 2 i 1  6k 3i    2k 2i

Vì điểm cuối của đoạn i-1 trùng với điểm đầu của đoạn I ( p i 0   p i1 1 )
Theo Hermite:
k 2  3 p1  p 0   2 p ' 0  p '1 và k 3  2 p 0  p1   p ' 0  p '1


Nên ta có:
2 3p i  pi 1   2 p ' i 1  p ' i   62 p i 1  pi   p ' i 1  p ' i   22 p i 1  p i   p ' i 1  p ' i 

- 10 -


b) Đường B-Spline
Với Bezier hay Spline đều không cho ta thay đổi đường cong một cách cục
bộ, việc thay đổi vị trí các điểm kiểm soát hay các vector tiếp tuyến không chỉ
ảnh hưởng trực tiếp đến độ dốc của đường cong lân cận quanh điểm kiểm soát
mà còn kéo theo ảnh hưởng đến các phần còn lại của đường cong. Đường Bezier
thêm vào đó khi tính sấp xỉ ở bậc cao sẽ phức tạp còn khi liên kết nhiều đoạn
Bezier hay Hermite bậc thấp có thể đem lại ích lợi khi tính toán nhưng yếu tố
ràng buộc về tính liên tục của đạo hàm bậc cao tại các điểm nối không cho điều
khiển cục bộ như mong muốn.
Việc kết hợp luôn phiên các đoạn cong tổng hợp, thông qua các đa thức
tham số xác định riêng rẽ trên một số điểm kiểm soát lân cận với số bậc tùy ý
không phụ thuộc vào số điểm kiểm soát, cho phép tạo nên đường cong mềm BSpline. Đường cong này đã khắc phục được các nhược điểm mà các dạng đường
cong trước chưa đạt được. Có nghĩa là khi dịch chuyển điểm kiểm soát của
đường cong thì chỉ một vài lân cận của điểm kiểm soát bị ảnh hưởng chứ không
phải toàn bộ đường cong.
Với n+1 điểm kiểm soát pi ta có:
n

p u    N i,k u . pi
i 0

Trong đó N i,k u  là hàm hợp B-Spline bậc k-1 và sự khác biệt giữa BSpline và Bezier sẽ được thể hiện trên đó. Trong đường Bezier bậc của đa thức
được xác định bởi số đoạn cong trên đường cong đó. Trong đường Bezier bậc

của đa thức được xác định bởi số đoạn cong trên đường cong đó, còn với đường
B-Spline bậc được thỏa mãn độc lập với số điểm kiểm soát của đường. Hơn nữa
bậc của Bezier khác 0 trên toàn bộ khoảng của tham số u còn bậc của B-Spline
chỉ khác 0 trên đoạn ngắn của các tham số. mỗi doạn trên hàm hợp chỉ tương ứng
với một điểm thì chỉ dẫn tới sự thay đổi cục bộ trong khoảng mà trên đó tham số
của hàm hợp khác 0.
Biểu diễn toán học của B-Spline, vớihàm B-Spline có bậc k-1 xác định:

- 11 -


N i ,k u  

u  U i1 k  N

U i  U i 1 k

i 1, k 1

u   U i 1  u  N i ,k 1 u 
U i 1  U i  2 k 

u  u i , u i 1 


1
N i,k u   
0

Trong đó ui là các giá trị tại nút pi với các biến số u được gọi là các vector

nút.
Tất cả các giá trị nút đồng thời xác định trên vector nút và các nút nguyên
thường sử dụng dễ dàng. Trong trường hợp này các hàm hợp bậc k sẽ khác o
trong khoảng k của vector nút và tòan bộ các giá trị trên vector cho một tập hợp
điểm bằng n+k+1.
Không như Bezier đường B-Spline không đi qua điểm đầu và điểm cuối trừ
khi hàm hợp được dùng là tuyến tính. Đường B-Spline có thể được tạo qua hai
điểm đầu, cuối và tiếp xúc với vector đầu, cuối của đa giác kiểm soát. Bằng cách
thêm vào các nút tại vị trí của các nút cuối của vector tuy nhiên các giá trị giống
nhau không nhiều hơn bậc của đường cong.
Giống như Bezier tính chất bao lồi của đa giác được kiểm soát và tính chất
chuẩn được thỏa mãn.
n

Nên ta có:

 N u   1
i ,k

i 0

Trong đường cong B-Spline, số lượng các nút, bậc của đường cong và số
điểm điều khiển luôn có quan hệ rằng buộc:
0u  nk 2

Vậy việc xác định vector nút sẽ phụ thuộc vào sự phân loại của chính bản
thân chúng và điều đó sẽ ảnh hưởng đến hình dạng của đường cong được môt tả.
Phân loại sẽ dựa trên loại của đường cong như sau:
Đều tuần hoàn
Không tuần hoàn

Không đều

- 12 -


 B-Spline Đều và tuần hoàn
Vector nút là đều khi các giá trị của chúng cách đều nhau một khoảng ∆ xác
định
Ví dụ: [2 4 6 8 10] với ∆ xác định=2
[1/3 2/3 1 4/3 5/3] với ∆ xác định= 1/3
Trong các bài toán thực tế, thong thường khoảng xác định tham biến nằm
trong khoảng từ 0 đến 1 hay từ 0° đến 360° thì việc chọn giá trị của các vector
nút được chuẩn hóa trong khoảng từ [0 1] hay [0° 360°] đó.
Các nút gọi là đều và tuần hoàn khi các hàm B-Spline đối với mỗi phân
đoạn có thể chuyển đổi lẫn nhau. Bảng dưới đay chỉ ra thay đổi của miền tham số
và vector nút khác nhau của các đường cong B-Spline khi bậc của đường cong
thay đổi. Số lượng của vector nút được quy định bởi biểu thức m-n+k và số
lượng các điểm kiểm soát được tính qua biểu thức n+1=6
Bậc (k-1)

Cấp (k)

Vector nút (m=n+k)

Khoảng tham số k-1≤t≤n+1

1

2


[0 1 2 3 4 5 6 7]

1≤t≤6

2

3

[0 1 2 3 4 5 6 7 8]

2≤t≤6

3

4

[0 1 2 3 4 5 6 7 8 9]

3≤t≤6

Tính chất:
Ảnh hưởng của mỗi hàm cơ sở được giới hạn trong k đoạn là cấp của đường
cong cần thể hiện. Vậy chúng ta sử dụng đường cong bậc ba thì ảnh hưởng của
hàm cơ sở trải dài trên bốn đoạn của đường cong.
Đường B-Spline tuần hoàn không đi qua các điểm đầu và cuối của đa giác
kiểm soát ngoại trừ đường bậc 1 (k=2) mà khi đó đường cong chuyển dạng thành
đường thẳng.

- 13 -



Ví dụ về đường cong B-Spline tuần hoàn có các bậc khác nhau có cùng
điểm kiểm soát. Khi k=2 đường cong bậc một trùng với các cạnh của đa giác
kiểm soát.
Khi k=3 đường cong B-Spline bậc 2, bắt đàu tại trung điểm của cạnh thứ
nhất và kết thúc tại trung điểm của cạnh cuối cùng của đa giác kiểm soát.
 B-Spline Không tuần hoàn
Một vector không tuần hoàn hoặc mở là vector nút có giá trị nút tại các điểm
đầu cuối lặp lại với số lượng các giá trị lặp lại bằng chính cấp k của đường cong
và các giá trị nút trong mỗi giá trị lặp lại này là bằng nhau. Nếu một trong hai
điều kiện này hoặc cả hai điều kiện không được thỏa mãn thì vector nút là không
đều.
Các vector nút không tuần hoàn cung cấp các hàm cơ sở được định nghĩa
trong một miền tham số tạp và không có sự phức tạp và không có sự mất mát như
với loại vector tuần hoàn và vì vậy đường cong B-Spline loại này luôn đi qua các
điểm đầu và cuối của đa giác kiểm soát.
 B-Spline Không đều
Trong vector nút không tuần hoàn, giá trị các nút xuất hiện tại các biên được
lặp lại và các nút bên trong các nút bằng nhau. Nếu một trong hai điều kiện này
hoặc cả hai điều kiện không thỏa mãn thì vector nút là không đều.
Ví dụ: [0 1 2 3 3 4 5]
[0.0 0.3 0.5 0.84 1]
Các vector nút loại đều cho phép người sử dụng dễ hình dung và sử lý trong
các phép toán nhưng trong một số các trường hợp bước nút không đều lại có ưu
điểm đặc biệt. Ví dụ như trong việc điều khiển hình dạng của đường cong trong
tiến trình thiết kế khi các sai lệch không mong muốn có thể xuất hiện.

- 14 -



CHƯƠNG III:
CÁC MÔ HÌNH BỀ MẶT TRONG ĐỒ HỌA
3.1. Bề Mặt Đa Giác
Một bề mặt đa giác ( polygon surface ) là sự tập hợp các cạnh đỉnh và sự kết
nối các đa giác sao cho mỗi cạnh là cạnh chung của nhiều nhất hai đa giác. Mặt
cạnh nối hai đỉnh, một đa giác được tạo bở chuỗi khép kín của các cạnh. Một
cạnh có thể là cạnh chung của hai đa giác, một đỉnh là đỉnh chung 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 giác. Một lưới đa giác có
thể được biểu diễn theo một vài cách khác nhau, mỗi một cách sẽ có ưu điểm và
nhược điểm riêng. Nhiệm vụ của những người lập trình ứng dụng là chọn ra cáh
biểu diễn tốt nhất. Một vài cách biểu diễn có thể được sử dụngtrong một chương
trình ứng dụng: một cách cho lưu trữ ngoài , một cách cho việc sử dụng bên
trong, và một cách khác cho người sử dụng tương tác tạo ra lưới.
Hai tiêu thức cơ bản, không gian và thời gian được, sử dụng để đánh giá các
biểu diễn khác nhau. Các thao tác đặc trưong trên một lưới đa giác là tìm ra tất cả
các cạnh chung gắn với một đỉnh, xác định các đa giáccó chung cạnh hoặc chung
đỉnh, xác định các đỉnh nối cho một cạnh, xác định các cạnh của một đa giác,
biểu diễn lưới, nhận dạng các lỗi khi khi biểu diễn ( thiếu cạnh, đỉnh hoặc đa giác
). Nói chung mối quan hệ giữa các đa giác, đỉnh và các cạnh càng được biểu diễn
rõ ràng thì thao tác sẽ được thực hiện nhanh hơn nhưng lại đòi hỏi nhiều không
gian hơn.
3.1.1. Biểu Diễn Lưới Đa Giác
Có ba cách biểu diễn lưới đa giác
-

Biểu diễn theo hàm hiện

-

Con trỏ tới danh sách các đỉnh


-

Con trỏ tới danh sách các cạnh

a) Biểu diễn theo hàm hiện
Mỗi đa giác được biểu diễn bởi danh sách toạ độ các đỉnh
P=(( x1 , y , z1), ( x 2 , y , z 2),...( x n , y , z n) )
1
2
n
- 15 -


Các đỉnh được lưu theo thứ tựmà ta sẽ gặp chúng khi đi một vòng quanh đa
giác. Có các cạnh giữa các đỉnh trong danh sách và giữa đỉnh đầu và đỉnh cuối.
Với một đa giác đơn,cách biểu diễn này hiệu quả về mặt không gian; với một
lưới đa giác sẽ tốn nhiều không gian hơn vì toạ độ các đỉnh chung được tính hai
lần. Vấn đề là không có cách biểu diễn theo hàm hiện cho các cạnh chung và các
đỉnh chung. Chẳng hạn để di chuyển một đỉnh mà tất cả các cạnh nối với đỉnh đó
đều phải biến đổi theo, ta phải xác định tất cả đa giác chung đỉnh đó. Việc tìm
kiếm này đòi hỏi so sánhba toạ độ một đỉ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 sếp N toạ độ, nhưng quá trình này tốn N

log

2

N,


và có thể nguuy hiểm vì một đỉnh có thể sẽ có toạ độ khác đi do quá trình làm
tròn. Do đó 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 đựoc 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 kần đó là nguyên nhân vẽ lại trong
bút vẽ, thiết bị ghi phím và các hiển thị vector và raster.
b) Con trỏ tới danh sách các đỉnh
Mỗi đỉnh của lưới đa giác được lưu ch ỉ một lần trong danh sách các đỉnh
V= (( x , y , z1),..., ( xn , y , z n)) . Một đa giác được xác định bởi danh sách các chỉ
1

1

n

số ( hoặc các con trỏ ) tới danh sách các đỉnh. Một đa giác có các đỉnh là 2,4,7 và
9 thì danh sách các đỉnh được biểu diễn là p=(2,4,7,9).
c) Con trỏ tới danh sách các cạnh
Ta có danh sách các cạnh V. Trong phương pháp này, biểu diễn đa giác theo
danh sách con trỏ nhưng không phải trỏ tới danh sách các đỉnh mà trỏ tới danh
sách các cạnh, mỗi cạnh đúng một lần. Mỗi cạnh trong danh sách các cạnh trỏ tới
hai đỉnh trong danh sách các đỉnh để xác định một cạnh, và một hoặc hai đa giác
mà cạnh đó thuộc. Như vậy,ta mô tả đa giác dưới dạng P=( E1 ,..., E n ), và một
cạnh được mô tả E=(V 1 ,V 2 , P1 , P2 ). Khi một cạnh chỉ thuộc một đa giác P1
hoặc P2 sẽ là rỗng.

- 16 -


Khi biểu diễn đa giác bởi các cạnh, thay bằng cách biểu diễn tất cả các đa giác

thì tránh được các phép cắt, chuyển đổi và chuyển đổiphân hình. Việc tô màu đa
giác cũng được thực hiện dễ dàng. Trong một vài trường hợp, khi mô tả cấu trúc
của một đối tượng dạng tổ ong 3D, một số cạnh sẽ là cạnh chung của 3 đa giác.
Trong trường hợp này, khi mô tả một cạnh có thể mở rộng ra bao gồm một số đa
giác E=(V 1 ,V 2 , P1 , P2 ,..., P n )
+) Nhận xét
Trong 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
đỉnh, con trỏ tới danh sách các cạnh ) không dễ dàng xác định xem những cạnh
nào trùng với một đỉnh tất cả các cạnh đều phải được kiểm tra. Tất nhiên các
thông tin có thể được thêm vào để xác định các mối quan hệ.
Khi biểu diễn dữ liệu cho bề mặt lưới đa giác hoặc cho một vật thể ba chiều nói
chung trong máy tính, nên nhập dữ liệu thành một file riêng. Điều này rất tiện lợi
khi ta muốn thay đổi vật thể thì chỉ cần thay đổi dữ liệu ở file riêng này. Ngoài ra
cách tổ chức dữ liệu thành file riêng còn giảm được bộ nhớ cho chương trình, và
thực hiện rất tốt với các vật thể phức tạp. Trong CAD các file này đã có định
dạng sẵn.
3.1.2. Phương Trình Mặt Phẳng
Khi làm việc với nhiều đa giác hoặc lưới đa giác, ta thường cần biết tới phương
trình mặt phẳng chứa đa giác đó. Trong một vài trường hợp các phương trình này
được biết theo hàm ẩn qua phương pháp xác định đa giác. Nếu không biết được
phương trình ta có thể sử dụng toạ độ của ba đỉnh để xác định mặt phẳng.
a) Phương trình hàm ẩn
Phương trình mặt phẳng có thể được biểu diễn theo dạng sau
F(x,y,z)= Ax+By+Cz+D=0

(1.1)

Trong đó (x,y,z) xác điịnh một điểm tuỳ ý trongmặt phẳng, các hệ số A,B,C và
D là các hằng số mô tả đặc điểm không gian của mặt phẳng.


- 17 -


 Cho ba điểm không thẳng hàng

P ,P
1



2

P

3

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
D

B

C

xDy Dz
i

i


i

 -1,

i=1,2,3

(1.2)

Kết quả được:
A=

y (z  z )  y (z  z )  y (z  z )
1

2

3

3

2

1

1

3

2


B= z1 ( x2  x3)  z2 ( x3  x1)  z1 ( x1  x2)
C=

(1.3)

x (y  y )  x ( y  y)  x (y  y )
1

2

D=  x1 ( y

2

3

2

3

3

1

1

2

z  y z ) x (y z  y z ) x (y z  y z )

3

3

2

2

3

1

1

3

3

1

2

2

1

+) Mặt phẳng của phương trình (1) chia không gian 3D thàng hai phần riêng biệt
chứa các điểm có toạ độ (x,y,z) mà F(x,y,z)>0 và F(x,y,z)<0 riêng biệt. Để xác
định dấu của một phần 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 phẳng )và thay thế toạ độ vào F(x,y,z). Chẳng hạn

mặt phẳng 3x-7y+5z+1=0 chia không gian 3D thành hai phần, phần chứa gốc là
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 vector P1P2*P1P3 (hoặc P2P3*P2P1,…)
Vector pháp tuyến này có ba thành phần A,B,C xác định bởi (3). Nếu tích vector
này là 0, thì ba điểm thẳng hàng và không xác định được mặt phẳng. Để tính D ta
thay thế pháp tuyến [A,B,C] và một trong ba điểm vào phương trình (1)
+) Khi đã xác định được phương trình mặt phẳng bằng cách sử dụng toạ độ của
tất cả các đỉnh, 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à:
D=

x  By  Cz
2

2

A  B C
- 18 -

2

(1.4)


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ới mặt phẳng, nếu đỉnh ở trên mặt phẳng 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à có thể bỏ dấu căn đi được.

+) 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à
lưu trữ các hệ số mặt phẳng với pháp tuyến của nó
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 P1,P2
và P3. Một điểm P(x,y,z) nằm trên mặt phẳng thì vector P1P phải là kết hợp
tuyến tính của vector P1P2 và P1P3. Nói một cách khác là tồn tai hai số thực u,v
thoả mãn:
P1P=uP1P2+vP1P3
x- x1  u( x2  x1)  v( x3  x1)

Như vậy:

y  y1  u( y2  y1)  v( y3  y1)
Z

z u(z z)v(z z)
1

2

1

3

1

- 19 -

(1.5)



3.2. Bề Mặt Bậc Hai
3.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) thoả mãn phương trình:
2

2

2

x  y  z r

2

(2.1)

Ta có thể mô tả bề mặt hình cầu theo dang tham số, sử dụng góc kinh độ  và
góc vĩ độ 
x=r cos  cos 

  
y=r cos  sin 

  

z=r sin 

Hinh 3.1: Hình cầu


- 20 -

(2.2)


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

2

2

 x   y   z 
     
a b c

(2.1)

1

Biểu diễn dưới dạng tham số của ellipsoid theo góc vĩ độ  và góc kinh độ 
như sau:
x= a cos  cos 


y=b cos  sin 




2

 

2 (2.2)

 
2
2

z=c sin 

Hình 3.2: Hình Ellipsoid

- 21 -


3.2.3. Hình Xuyến
Hình xuyến là một bề mặt được tạo ra bằng cách quay một đường tròn hoặc
một đường bậc hai quanh một trục xác định. Phương trình của một hình xuyến
trong hệ toạ độ Decard như sau:
2

2
2

x  y  z


r         

a b  c



2

(3.1)

1

Trong đó r là bán kính đường biên ngoài. Trong nhiều ứng dụng hình xuyến
được tạo ra bằng cách sử dụng đường tròn (a=b) như trong hình dưới đây. Biểu
diễn theo tham số của hình xuyến theo các góc vĩ độ  và góc kinh độ  như
sau:
x= a cos  cos 
y= b cos  sin 

    
   

z= c sin 

Hình 3.3: Hình xuyến

- 22 -

(3.2)



3.3. Mặt Cong Bậc Ba
3.3.1. Bề Mặt Bậc Ba Hermite
Mặt cong tham biến được tạo bởi bề mặt qua tại 4 điểm dữ liệu tại 4 góc và các
đường cong có phương trình bậc ba qua chúng: như vậy 16 vector điều kiện hay
tương đương với 48 giá trị đại số cần thiết để xác định hệ số của phương trình.
Khi những hệ số là 4 điểm dữ liệu góc và 8 vector tiếp tuyến tại các điểm đó
theo các hướng u,v tương ứng cùng 4 vector xoắn thì mặt cong tạo thành là mặt
cong Hermite.
Phương trình của mặt bậc ba có dạng:
3

3

Q(u,v)=  C i , j u

i

i 0 j 0

v

j

(3.1.1)

0  u, v  1

Hay tương đương ở dạng ma trận:
Q(u, v) U  C  V 


T

0  u, v  1

(3.1.2)

Với:
U =[ u 3 u 2 u

1 ] , V =[ v 3 v 2 v

1]

Và ma trận hệ số C là:

[C]=

C 00

C 01

C 02

C 03

C10
C 20

C11

C 21

C12
C 22

C13
C 23

C 30

C 31

C 32

C 33

Bề mặt Hermite được giới hạn bởi bốn đường cong và mỗi đường cong
giới hạn là đường cong Hermite. Những đường cong này được xác định một cách
chính xác dựa trên 4 điểm P(u,0), P(1,u), P(0,v), và P(1,v).

- 23 -


3.3.2. Bề Mặt Bậc Ba Bézier
Mặt cong Hermite là một công cụ cho phép biểu diễn mềm dẻo trong thiết kế,
tuy niên trong một số trường hợp khi yêu cầu sự biến đổi mật độ thì mặt cong
Hermite lại xuất hiện nhiều nhược điểm. Để khắc phục những nhược điểm này
người ta đưa vào mặt cong Bézier tuy nó không thay thế được hoàn tào mặt cong
Hermite nhưng nó cũng đưa cho người sử dụng những cách lựa chọn mới thích
hợp hơn

Công thức tổng quát của bề mặt Bézier có dạng:
3

3

3

3

P(u, v)   Pi , j Bi (u ) B j (v)

(3.2.1)

0  u, v  1

i 0 j 0

Hay tương đương ở dạng ma trận:
P(u,v)=B(u) P B T (v)

(3.2.2)

Trong đó
 P00
P
P=  10
 P20

 P30


P01
P11

P02
P12

P21
P31

P22
P32

P03 
P13 
P23 

P33 



1u 


3

B(u)= 

B (v)=  1v

T






3



3u 1u  3u 1u  u 
2

2

3v 1v 3v 1v v
2

2

3

3




T

Thông thường bề mặt bậc ba Bézier được giới hạn bởi 4 đường cong trong đó
mỗi đường cong lại là một đường Bézier nên mặt cong Bézier cũng có nhiều

thuộc tính tương tự như đường cong Bézier.

- 24 -


3.3.3. Bề Mặt Bậc Ba B-spline
Là mô hình mặt được pháp triển từ mặt Bézier có công thức như sau:
3

3

Q(u , v)   Bi , j N i,k u  M

v 

j ,l

i 0 j  0

Với

N u  và M v  là các hàm B-spline theo hai tham biến u,v tương ứng.
i, k

i, k

Cách tính của chúng được thể hiện như sau:
1 nếu

N

N

i,k



u  x N
i

x

i , k 1

i , k 1

 xi

u  xi  k u N i1,k 1 u 


x

1 nếu

M v  



M


j ,l

v  y M
j

y

Trong đó

B

i, j

j  l 1

x,y
i

j



y

j

ik

u 


 xi1

y

j 1

0 nếu ngược lại

j ,1



i 1

i

0 trường hợp ngược lại



i ,1

x u x

j , j 1

y

j


v 


y

j 1

M

y

j 1

i 1,l 1



y



v 

j 1

là các phần tử của nút vector

là các điểm của lưới đa giác kiểm soát bề mặt

Thông thường người ta dùng các hàm hợp để mô tả các đương biên lẫn các yếu

tố bên trong. Nếu số điểm kiểm soát bằng số bậc của mặt cong cộng 1 thì mặt Bspline chuyển dạng sang mặt Bézier.

- 25 -


×