Thông thường các đơn vị sản xuất phải đồng thời sử dụng kết hợp nhiều hệ thống phần mềm với nhau, ví dụ khi biên tập đồ họa thường được sử dụng AutoCad hoặc MicroStation, còn khi thành l
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC MỎ - ĐỊA CHẤT
-o0o -
TRẦN THÙY DƯƠNG
NGHIÊN CỨU XÂY DỰNG CÔNG NGHỆ THÀNH LẬP BẢN ĐỒ SỐ ĐỘ CAO TRONG ĐIỀU KIỆN VIỆT NAM
LUẬN ÁN TIẾN SĨ KỸ THUẬT
HÀ NỘI-2007
Trang 2BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC MỎ - ĐỊA CHẤT
-o0o -
TRẦN THÙY DƯƠNG
NGHIÊN CỨU XÂY DỰNG CÔNG NGHỆ THÀNH LẬP BẢN ĐỒ SỐ ĐỘ CAO TRONG ĐIỀU KIỆN VIỆT NAM
Chuyên ngành: Thiên văn trắc địa
Mã số: 2.16.02
LUẬN ÁN TIẾN SĨ KỸ THUẬT
NGƯỜI HƯỚNG DẪN KHOA HỌC
GS.TSKH PHẠM HOÀNG LÂN
HÀ NỘI-2007
Trang 3LỜI CAM ĐOAN
Tôi xin cam đoan đây là công trình nghiên cứu của riêng tôi Các số liệu và kết quả được nêu trong luận án là trung thực, chưa từng được ai công
bố trong bất kỳ công trình nào khác
TÁC GIẢ LUẬN ÁN
TRẦN THÙY DƯƠNG
Trang 42.2.1 Xác định điểm nằm ở phía nào của đoạn thẳng 24
Trang 52.2.3 Điểm nằm trong đa giác 26
3.5 Các giá trị đạo hàm của B-spline bậc ba không tuần hoàn 413.6 Xác định điểm điều khiển của B-spline bậc ba không tuần hoàn 43
4.1 Thiết kế hệ thống và xây dựng các đối tượng đồ họa cơ sở 49
4.2.2 Ứng dụng của phân hoạch trong các bài toán khác nhau 56
4.3.1 Phép ánh xạ từ hệ tọa độ thực lên hệ tọa độ màn hình 574.3.2 Phép ánh xạ từ hệ tọa độ thực lên hệ tọa độ mặt chiếu ảo 584.3.3 Phép ánh xạ từ hệ tọa độ mặt chiếu ảo lên hệ tọa độ màn hình 62
Trang 64.3.4 Các thao tác thu phóng và trượt bản vẽ 64
5.1 Mô hình mạng lưới tam giác không quy chuẩn Delaunay 68
Trang 7DANH MỤC CÁC HèNH VẼ
Hình 2-1 Các trường hợp cần phát hiện và loại bỏ khi khoanh vùng 29
Hình 2-2 Các trường hợp cần loại điểm khi khoanh vùng 30
Hình 2-3 Vùng có đảo và vùng ngoài biên 31
Hình 3-1 Một điểm trên đường cong tham số bậc ba 33
Hình 3-2 Phép nội suy tham số bậc ba từng khúc 34
Hình 3-3 Các véc tơ tiếp tuyến tại các điểm đầu mút của phân đoạn 34
Hình 3-4 Thay đổi độ lớn của véc tơ tiếp tuyến dẫn đến sự thay đổi hình dạng của đường cong tham số bậc ba 35
Hình 4-1 Sơ đồ thứ tự của các quad con 55
Hình 4-2 Hệ tọa độ mặt chiếu ảo 60
Hình 5-1 Đường tròn nhỏ nhất của A và B 74
Hình 5-2 Trường hợp PQ là cạnh biên 74
Hình 5-3 Hoán đổi tam giác trong một tứ giác 79
Hình 5-4 Chiều quay quét khi tạo đường đồng mức trực tiếp 83
Hình 5-5 Các trường hợp biên của mặt phẳng H so với mặt tam giác 85
Hình 5-6 Quan hệ tọa độ điểm gây nhiễu và điểm xét 90
Hình 5-7 Hiển thị các đường đẳng dị dị thường trọng lực 92
Hình 5-8 Hiển thị các đường đẳng dị dị thường độ cao 92
Hình 5-9 Hiển thị thông tin thuộc tính đối tượng công trình ngầm 100
Trang 8DANH MỤC CÁC BỤNG
Bảng 3-1 Các phân đoạn B-spline bậc ba không tuần hoàn 40
Bảng 4-1 Các đối t−ợng đồ họa cơ sở 50
Bảng 4-2 Các đối t−ợng định danh 53
Bảng 5-1 Các tham số của mô hình 36 nguồn nhiễu 90
Bảng 5-2 Bảng m_ vật liệu công trình ngầm 95
Bảng 5-3 Bảng m_ loại công trình ngầm 95
Bảng 5-4 Th− viện ký hiệu dạng điểm CTN 97
Bảng 5-5 Th− viện ký hiệu dạng tuyến 99
Trang 9MỞ ĐẦU
1 Tớnh cấp thiết của đề tài
Trong công tác thành lập bản đồ số độ cao hiện nay, phần mềm có một vai trò rất quan trọng Thông thường các đơn vị sản xuất phải đồng thời sử dụng kết hợp nhiều hệ thống phần mềm với nhau, ví dụ khi biên tập đồ họa thường được sử dụng AutoCad hoặc MicroStation, còn khi thành lập mô hình
số độ cao thường sử dụng các phần mềm như SoftDesk, SDR, đều là các phần mềm do các công ty của Mỹ sản xuất, các vấn đề liên quan đến bài toán tạo topology lại thường sử dụng AcadMap, ArcInfo Các phần mềm này là các phần mềm thương mại nên có độ ổn định và tốc độ cao, đ_ được nhiều đơn vị thành lập bản đồ sử dụng hiện nay Tuy nhiên, sự phụ thuộc vào các công nghệ nước ngoài trong công tác thành lập bản đồ số nói chung và bản đồ số
độ cao nói riêng đ_ gây ra những khó khăn nhất định, đặc biệt khi phải tuân thủ các quy định của luật bản quyền
Hiện nay, trong ngành trắc địa vẫn chưa có một phần mềm nào cho phép thành lập bản đồ số độ cao một cách hoàn toàn chủ động và độc lập,
đáp ứng được các yêu cầu kỹ thuật trong xử lý biên tập, quản lý dữ liệu đo
đạc, cũng như các yêu cầu mỹ thuật về mặt trình bày bản đồ Do đó đề tài nghiên cứu xây dựng công nghệ thành lập bản đồ số độ cao mang tính thời sự
và cấp thiết
2 Mục đớch, đối tượng, nội dung và phạm vi nghiờn cứu
Mục đích của đề tài là nghiên cứu, khảo sát, hệ thống hóa các thuật toán, khẳng định về lý thuyết cũng như thực tiễn khả năng xây dựng một hệ thống phần mềm thành lập bản đồ số độc lập với đầy đủ chức năng biên tập,
có độ tin cậy và tốc độ cao
Đối tượng và phạm vi nghiên cứu của luận án bao gồm các vấn đề liên quan đến công nghệ thành lập bản đồ số độ cao tỷ lệ lớn bằng phương pháp
đo đạc trực tiếp ngoài thực địa
Trang 10Nội dung nghiên cứu của luận án bao gồm:
1 Khảo sát, phân tích, đánh giá các phần mềm phổ biến trong sản xuất, các đặc thù của công nghệ thành lập bản đồ số theo phương pháp đo đạc trực tiếp ngoài thực địa
2 Nghiên cứu các thuật toán liên quan đến các vấn đề biên tập đồ họa
3 Các giải pháp thành lập mô hình số độ cao
4 Nghiên cứu bài toán tạo topology
5 Thiết kế, xây dựng phần mềm
6 Đánh giá các kết quả đạt được trong các ứng dụng chuyên ngành
3 Cỏc luận điểm bảo vệ
1 Phần mềm kết hợp ba chức năng: biờn tập đồ họa, thành lập, xử lý mụ hỡnh số độ cao và tạo topology sẽ giải quyết được hầu hết cỏc vấn đề liờn quan đến bản đồ số
2 Sử dụng lý thuyết ỏnh xạ và phõn hoạch khụng gian cỏc đối tượng phự hợp sẽ là cơ sở để xõy dựng một hệ thống biờn tập đồ họa cú tốc độ và độ tin cậy cao
4 Cỏc điểm mới của luận ỏn
1 Kế thừa các nguyên tắc lưu giữ thông tin trực giác của quy trình thành lập bản đồ truyền thống là một trong những biện pháp tăng tốc độ thành lập bản đồ số độ cao
2 Bằng cách lựa chọn các thuật toán phù hợp đồng thời với các biện pháp loại bỏ các trường hợp biên, luận án đ_ giải quyết bài toán tạo topology hiệu
Trang 11hoạch không gian các đối tượng đồ họa theo cây tứ phân Đây là cơ sở để xây
dựng một hệ thống biên tập đồ họa có tốc độ và độ tin cậy cao
5 Các biện pháp xử lý biên tập mô hình số độ cao cho phép xây dựng mô
hình phù hợp với thực tế
5 Phương phỏp nghiờn cứu
Trong luận án đ_ sử dụng phương pháp nghiên cứu lý thuyết cho việc phân tích, đánh giá và chọn lựa các thuật toán phù hợp để giải quyết các bài toán trong công nghệ thành lập bản đồ số độ cao, phương pháp mô hình hóa
và thực nghiệm so sánh để kiểm tra các kết quả thu được
6 í nghĩa khoa học và thực tiễn của đề tài
Trang 12Chương 1 TỔNG QUAN 1.1 Bản đồ số độ cao
Đối với thuật ngữ về bản đồ, ở Việt Nam khi nói tới bản đồ địa hình, chúng ta thường hiểu đây là loại bản đồ cơ bản, trong đó thể hiện các yếu tố
địa hình liên quan đến bề mặt đất Loại bản đồ, bao gồm cả loại bản đồ địa hình và các loại bản đồ chuyên ngành, trong đó chiều thứ ba mang ý nghĩa tổng quát hơn, được gọi là bản đồ độ cao
Công nghệ thành lập bản đồ số độ cao là sự kết hợp quy trình đo đạc thực địa với hệ thống phần mềm biên tập đồ họa và mô hình số độ cao
Trong luận án này chúng tôi chỉ tập trung nghiên cứu vào các vấn đề còn chưa được giải quyết triệt để của công nghệ thành lập bản đồ số độ cao như thiết kế, xây dựng hệ thống biên tập bản đồ độc lập, sử dụng và xử lý
đường cong, giải pháp cho các trường hợp biên trong bài toán tạo topology, biên tập mô hình số độ cao Các vấn đề khác trong công nghệ thành lập bản
đồ đ_ được nghiên cứu đầy đủ như nhập, xử lý dữ liệu đo đạc ngoại nghiệp,
sẽ không được đề cập hoặc phân tích chi tiết trong luận án
1.2 Nguyờn tắc lưu giữ thụng tin trực giỏc trong quy trỡnh thành lập bản đồ
Công tác thành lập bản đồ số ở nước ta mới được các đơn vị sản xuất
áp dụng đại trà khoảng 10 năm gần đây Quy trình thành lập bản đồ số so với quy trình thành lập bản đồ thông thường trước đây có những điểm khác biệt, tuy nhiên cả hai quy trình này đều phải tuân thủ theo những nguyên tắc lưu giữ thông tin trực giác Trong quy trình đo đạc truyền thống, những nguyên tắc được thể hiện như sau:
Người vẽ bản vẽ phải là người tham gia trong đội đo đạc hay nói cách
khác là những người có hình dung về những địa vật cũng như địa hình ngoài thực địa
Trang 13Bản vẽ được vẽ ngay trong quá trình đo đạc hoặc ngay sau khi đo dựa trên
cơ sở của sổ đo chi tiết cùng với các ký hiệu liên quan, để đảm bảo các thông tin về bản vẽ còn chưa bị quên
Các điểm mia đuợc triển bản vẽ một cách tuần tự từ trạm máy này sang trạm máy khác, các sai sót về điểm mia được phát hiện ngay sau khi triển
Đây là những nguyên tắc sẽ làm cho công việc xử lý nội nghiệp trở nên đơn giản hơn nhiều
Cần lưu ý rằng, để phát hiện điểm mia sai về mặt địa vật sẽ dễ dàng hơn xác định điểm mia sai về địa hình, bởi vì khi giá trị độ cao của một điểm sai sẽ kéo theo bề mặt địa hình chung quanh điểm này bị ảnh hưởng và việc
đọc địa hình thông qua đường đồng mức cũng khó khăn hơn so với việc xác
định các yếu tố địa vật
Khi ứng dụng máy tính trong việc làm bản đồ số bằng phương pháp toàn đạc thông thường, những nguyên tắc nêu trên cần được kế thừa Do đó, khi thành lập bản đồ số bằng phương pháp đo trực tiếp ngoài thực địa, đơn vị sản xuất cần tuân thủ một số điểm như sau:
Phải đưa máy tính ra ngoài thực địa
Sử dụng các phần mềm thích hợp phục vụ cho công tác thành lập bản đồ
số, trong số đó phải có một phần mềm đồ họa với các chức năng biên tập
Trang 14Khả năng tạo và chỉnh sửa các ký hiệu bản đồ dưới dạng điểm (khối) Khả năng tạo và chỉnh sửa các ký hiệu bản đồ dưới dạng miền (tạo các mẫu tô)
Khả năng tạo và chỉnh sửa các kiểu ký tự phù hợp với các chữ quy
Ngoài ra, hệ thống phần mềm phục vụ cho công tác thành lập bản đồ
số còn phải thỏa m_n những yêu cầu sau:
Giao diện, thao tác đơn giản dễ hiểu bằng tiếng Việt, người sử dụng chỉ cần những kiến thức cơ bản tối thiểu về tin học
Cho phép sử dụng được những đặc điểm, thói quen trong quy trình đo đạc truyền thống, sử dụng triệt để thông tin trực giác như đ_ nêu ở phần trên
Phát hiện và khắc phục lỗi nhanh, chính xác
Tự động hóa trong một số công đoạn đòi hỏi nhiều thời gian và công sức
Thích ứng được các yêu cầu đặc thù ứng dụng trong điều kiện hoàn cảnh Việt Nam về mẫu m_, qui định, qui phạm của ngành cũng như địa phương
Trang 151.4 Cỏc phần mềm đồ họa thụng dụng phục vụ cho thành lập bản đồ số
độ cao
Phần mềm Suffer do h_ng Golden Software là phần mềm đồ họa cho phép xây dựng mô hình số địa hình được áp dụng đầu tiên ở Việt Nam vào những năm 80 của thế kỷ trước ưu điểm của Suffer là tương đối gọn nhẹ, dễ
sử dụng, phần mềm đ_ thể hiện được các đường đồng mức tương đối trơn Do các phương pháp nội suy của Suffer không phù hợp với thực tế đo đạc thực
địa, các công cụ biên tập, chỉnh sửa mô hình số địa hình không phong phú, nên phần mềm này ít được các đơn vị đo đạc thành lập bản đồ chuyên nghiệp
sử dụng
Phần mềm GeoCom (Australia), SDR (Mỹ), SoftDesk(Mỹ) là các phần mềm chuyên về thành lập bản đồ số địa hình được đưa vào nước ta vào đầu những năm 90 của thế kỷ trước, được một số đơn vị đo đạc chuyên nghiệp sử dụng tương đối có hiệu quả Các phần mềm này đều xây dựng mô hình số độ cao theo mô hình lưới tam giác không quy chuẩn(TIN) Delaunay và có các công cụ biên tập trên mô hình tương đối thuận lợi GeoCom, SDR đều là các môi trường đồ họa độc lập và có khả năng trao đổi với AutoCad thông qua khuôn dạng tệp dxf, còn SoftDesk sử dụng trực tiếp môi trường đồ họa AutoCad Hiện nay, GeoCom không còn thấy được sử dụng nữa
Các môđun tạo topology trong AcadMap, ArcInfo được sử dụng phổ biến trong việc khoanh vùng tự động Phần mềm Famis của Tổng cục Địa chính sử dụng môđun ArcTopo trong ArcInfo để phục vụ cho việc khoanh thửa đất trong công tác thành lập bản đồ địa chính Do được viết trong môi trường DOS, nên số vùng được xử lý của môđun ArcTopo còn hạn chế Phần mềm CescMap của Công ty địa chính công trình sử dụng môđun tạo topology trong AcadMap 3.0 cho mục đích tương tự Số vùng được xử lý của AcadMap
Trang 16lớn hơn so với môđun ArcTopo, các chức năng tìm và chỉnh sửa lỗi cũng hoàn thiện hơn
Trong số các môi trường đồ họa được sử dụng phổ biến nhất để phục
vụ cho công tác thành lập bản đồ số ở nước ta hiện nay, địa chính cũng như
địa hình, phải kể đến hai hệ phần mềm quan trọng nhất, đó là phần mềm AutoCad của h_ng AutoDesk và MicroStation của h_ng Bentley
Cả hai hệ thống phần mềm này đều được xây dựng từ thập niên 80 của thế kỷ trước Phần mềm AutoCad được xây dựng sớm hơn (từ năm 1982), có thể nói trong môi trường DOS phần mềm AutoCad đ_ từng không có đối thủ, phiên bản hoàn thiện và được ứng dụng phổ biến nhất trong thành lập bản đồ
số ở nước ta là AutoCad Release 12 MicroStation phát triển muộn hơn một chút, và sự thành công của phần mềm này lại ở trong môi trường Window, nó
có những chức năng biên tập phong phú hơn đối với việc trình bày bản đồ, lại
được liên kết với các phần mềm chuyên về bản đồ của h_ng InterGraph, do
đó được lấy là công cụ chủ yếu đối với các đơn vị làm bản đồ chuyên nghiệp
Cấu trúc dữ liệu của tệp bản vẽ MicroStation là DGN đ_ được lấy làm chuẩn mực đối với các đơn vị sản xuất và quản lý bản đồ chuyên nghiệp Tuy vậy, phần mềm AutoCad vẫn có vai trò quan trọng trong đo đạc thành lập bản
đồ số, đặc biệt đối với công tác khảo sát ở các lĩnh vực khác như giao thông, thủy lợi, thủy điện Chính vì vậy, việc khảo sát cơ chế hoạt động của cả hai phần mềm này dưới quan điểm lập trình có một ý nghĩa quan trọng để có thể
đặt cơ sở cho việc thiết kế, xây dựng một hệ thống phần mềm đồ họa độc lập linh hoạt, đáp ứng được các yêu cầu kỹ thuật chuyên ngành
Ngoài ra, cần nghiên cứu phần mềm liên quan đến việc thành lập mô hình số địa hình, nội suy và vẽ đường đồng mức như phần mềm SoftDesk hoặc SDR cũng như phần mềm liên quan đến việc tạo vùng và các mối quan
hệ Topology như phần mềm AcadMap Có thể nói rằng nếu chúng ta xây
Trang 17dựng được một hệ thống phần mềm kết hợp cả ba yếu tố là biên tập đồ họa, mô hình số địa hình và topology, thì có thể giải quyết được hầu hết các bài toán đặt ra liên quan đến bản đồ số hiện nay
Phương pháp để khảo sát các phần mềm đồ họa được thực hiện chủ yếu bằng thực nghiệm và bằng việc khảo sát chi tiết các cấu trúc dữ liệu tệp bản vẽ của mỗi phần mềm
Chúng ta có thể nhận thấy ngay rằng, sự thiết kế của cả hai hệ phần mềm này có những nét tương đồng: biện pháp ánh xạ các đối tượng lên màn hình, các đối tượng đồ họa cơ bản, các thuộc tính của chúng và các tham số liên quan đến bản vẽ, các chức năng biên tập, trình bày, quản lý đối tượng, tính mở của chương trình, khả năng can thiệp bằng các công cụ lập trình
về tổng quan được xây dựng gần như giống nhau
Để tăng tốc độ xử lý các đối tượng cho việc hiển thị, chọn đối tượng, bắt điểm cả hai hệ thống phần mềm này đều sử dụng các biện pháp tương
đối giống nhau
Trước hết, hai hệ thống này đều chọn giải pháp là cố gắng xử lý các đối tượng đồ họa trực tiếp, khi khả năng bộ nhớ trong còn cho phép, tránh các thao tác với bộ nhớ ngoài Đây là quan điểm trái ngược hẳn với phần mềm Mapinfo, khi ưu tiên số lượng đối tượng được xử lý hơn là tốc độ Mặc dầu vậy, số đối tượng có thể xử lý được trong cả hai phần mềm này là tương đối lớn (cỡ 400000-500000 đối tượng), đáp ứng được hầu hết các bài toán trong thực tế
Cả hai hệ thống phần mềm này đều sử dụng một mặt chiếu trung gian với mục đích nhằm biến đổi các đối tượng với các tọa độ là các số thực độ chính xác kép thành các đối tượng có các tọa độ là các số nguyên để tăng tốc độ xử lý (trong máy tính, các phép tính với số nguyên sẽ được thực hiện nhanh hơn các phép tính với số thực) Việc sử dụng một mặt chiếu trung gian như vậy sẽ làm cho hệ thống trở nên phức tạp hơn đáng kể vì
Trang 18nó phải luôn theo dõi xem có đối tượng nào trong quá trình hiển thị hoặc biên tập vượt ra ngoài phạm vi của mặt chiếu trung gian này hay không, tránh lỗi trong trường hợp tọa độ nguyên bị tràn Sự kiểm soát các đối tượng trong hai hệ thống đồ họa này không giống nhau Autocad chọn giải pháp tự động điều chỉnh phạm vi của mặt chiếu trung gian khi phát hiện có hiện tượng đối tượng trong bản vẽ vượt ra ngoài, còn quan điểm của MicroStation là cố gắng chọn những tham số bản vẽ một cách phù hợp nhất để tránh các thao tác điều chỉnh
Mặc dầu độ phức tạp khi lập trình các đối tượng của hệ thống bị tăng lên, biện pháp sử dụng các tọa độ nguyên sẽ đồng thời đạt được ba hiệu quả,
đó là tăng tốc độ tính toán xử lý, giảm bộ nhớ cần thiết cho mỗi đối tượng và tăng độ tin cậy của các phép so sánh tọa độ
Hai phần mềm này có một số điểm khác biệt trong cấu trúc dữ liệu, thiết kế hệ thống quản lý đối tượng, cách đặt tên đối tượng
Trong khi các thuộc tính một đối tượng MicroStation của tệp DGN được cấu tạo từ mức từng bit thì ở AutoCad trong tệp DWG lại ở mức từng byte
Điều này làm cho các đối tượng MicroStation có cùng một số lượng thuộc tính sẽ chiếm ít bộ nhớ hơn, nhưng các thao tác với bit thì sẽ khó khăn hơn
Các thuộc tính của mỗi đối tượng trong MicroStation độc lập, không phụ thuộc nhau, còn các thuộc tính của đối tượng trong AutoCad có thể phụ thuộc vào các thuộc tính của lớp hoặc khối Chính vì vậy màu sắc, kiểu
đường, độ dày của đường trong AutoCad có các thuộc tính lôgic là BYLAER (theo lớp) hay BYBLOCK (theo khối) còn trong MicroStation các khái niệm này hoàn toàn không có
Bản vẽ của AutoCad được thiết kế có tính độc lập cao hơn, ít phụ thuộc vào thư viện khối, kiểu đường, mẫu tô, phông chữ; các định nghĩa về khối,
Trang 19kiểu đường, phông chữ được lưu đồng thời bên trong tệp bản vẽ DWG/DXF
Nhập các tham số lựa chọn khi biên tập trong AutoCad chủ yếu qua dòng lệnh, còn MicroStation thông qua hệ thống hộp thoại Sub Pallette Các thao tác của MicroStation có xu hướng thiên về dùng chuột hơn
Cả hai phần mềm đều xây dựng một hệ thống lệnh có cú pháp chặt chẽ, phần mềm MicroStation có xu hướng cố gắng thực hiện lệnh với ít thao tác hơn, xây dựng hệ lệnh phong phú, chi tiết hơn Trình tự thực hiện lệnh
và tính thống nhất của chúng trong AutoCad có phần cơ bản và chặt chẽ hơn
1.5 Mụi trường lập trỡnh đồ họa
Mục đích của đồ họa máy tính là tạo ra và thao tác các hình ảnh đồ họa, nên đồ họa máy tính phải có khả năng tạo ra và hiệu chỉnh các hình ảnh này bằng cách tương tác và đáp ứng nhanh Do đó, đồ họa máy tính tương tác là cần thiết để con người điều khiển các quá trình đồ họa Sự phức tạp trong việc xây dựng một chương trình đồ họa phụ thuộc rất nhiều vào môi trường hệ điều hành và ngôn ngữ cấp cao được sử dụng Cụ thể hơn, ở mức người lập trình, nó phụ thuộc vào các thư viện đồ họa có sẵn trong chúng
Phần chủ yếu của việc cố gắng tiêu chuẩn hóa ở mức độ người lập trình ứng dụng được tìm thấy trong phạm vi của thư viện đồ họa máy tính Nhiều tiêu chuẩn đồ họa được phát triển trong nhiều năm, bao gồm CORE (1977, được chỉnh lại vào năm 1979) và GKS (Graphical Kernel System - Hệ thống kênh đồ họa, được chấp nhận 1984-1985), được phát triển riêng cho các thiết bị nhập xuất hai chiều chuẩn Một vài trong số đó trở thành các tiêu chuẩn chính thức, được thông qua bởi Viện tiêu chuẩn quốc gia Mỹ (ANSI),
Tổ chức tiêu chuẩn quốc tế (ISO) và các tổ chức khác Những cố gắng đầu tiên này kéo theo sự tìm kiếm các tiêu chuẩn mới cho các ứng dụng ba chiều
Trang 20ở mức độ cao của sự giao tiếp GKS-3D bổ sung thêm các khả năng ba chiều cho các tiêu chuẩn GKS sẵn có PHIGS (Programmer's Hierarchical Graphics System - Hệ thống đồ họa phân cấp của người lập trình, 1984) và PHIGS+ bao gồm các chức năng đồ họa ba chiều mạnh hơn và có khả năng tạo, thao tác các dữ liệu đồ họa phức tạp PHIGS+ tạo ra việc sử dụng toàn diện các khái niệm raster, bao gồm các khả năng tô bóng Nó còn bao gồm các hỗ trợ
về đường cong và mặt cong tham số
Chương trình biên tập đồ họa phải là chương trình mô hình tương tác,
được viết để thỏa m_n các nhu cầu biên tập bản đồ số, trong đó các chức năng đồ họa được truy xuất bởi người sử dụng mà không cần phải lập trình Trong trường hợp này, quá trình truy xuất các thư viện đồ họa được che dấu Người sử dụng chỉ tương tác với phần mềm thông qua giao diện cụ thể,
không thông qua m_ nguồn [15]
Môi trường DOS được sử dụng phổ biến trong thập kỷ 80 và đầu thập
kỷ 90 của thế kỷ trước, sau đó nó được thay thế bằng môi trường WINDOW
So với môi trường DOS, môi trường WINDOW có sự hỗ trợ hơn rất nhiều cho việc xây dựng một chương trình đồ họa Chúng ta sẽ xem xét cụ thể một
số khả năng hỗ trợ của môi trường này
Bản thân hệ điều hành WINDOW có giao diện đồ họa tương tác hơn hẳn so với môi trường DOS Nếu xây dựng một chương trình trong môi trường DOS người lập trình phải tốn rất nhiều công sức trong việc xây dựng
hệ thống giao diện của chương trình, thì trong môi trường WINDOW với các ngôn ngữ lập trình trực quan như Visual Basic, Delphi việc xây dựng hệ thống giao diện trở nên rất dễ dàng
Nếu trong môi trường DOS việc sử dụng bộ nhớ RAM ngoài phạm vi
640 Kb đòi hỏi rất nhiều công sức lập trình và sự hiểu biết sâu sắc về phần
Trang 21cứng, trong môi trường WINDOW việc tận dụng bộ nhớ RAM trở nên đơn giản hơn rất nhiều
Một trong các công việc đòi hỏi nhiều công sức và kinh nghiệm lập trình là lập trình đối với các thiết bị xuất như màn hình, máy in do tính đa dạng của chúng và phụ thuộc vào nhà sản xuất ra chúng Môi trường WINDOW có một sự hỗ trợ hoàn hảo bằng các trình đạo diễn thiết bị, bảo
đảm sự tương thích với rất nhiều loại thiết bị ngoại vi khác nhau
Trong môi trường WINDOW, việc sử dụng các phông chữ phong phú hơn nhiều Việc xây dựng các hàm kết xuất văn bản với các kiểu phông đẹp, các kiểu căn chỉnh theo ý muốn trở nên dễ dàng hơn nhiều
Thông thường việc sử dụng thư viện đồ họa được thực hiện thông qua các hàm có sẵn trong các ngôn ngữ cấp cao hoặc thông qua việc gọi các hàm API (Application Programmer's Interface) của môi trường hệ điều hành
Các hàm API đồ họa của môi trường WINDOW đ_ đáp ứng rất nhiều các yêu cầu của các chuẩn đồ họa như GKS hoặc PHIGS
Chính vì những lý do đó, việc xây dựng một phần mềm đồ họa là có tính khả thi nếu chúng ta tận dụng được sức mạnh của thư viện các hàm nói chung và các hàm liên quan đến đồ họa nói riêng
Trong số các ngôn ngữ lập trình trực quan có hiệu quả nhất trong môi trường WINDOW phải kể đến ngôn ngữ Visual Basic Mặc dù có một số nhược điểm như không hỗ trợ số cấu trúc con trỏ, thiếu một số đặc điểm của ngôn ngữ lập trình hướng đối tượng, không tạo được các thư viện liên kết
động thực sự (DLL), tốc độ thực hiện chương trình chậm, nhưng nó là ngôn ngữ dễ lập trình do tính đóng gói cao, được hỗ trợ rất nhiều tính năng của môi trường hệ điều hành, có thể sử dụng các đối tượng có sẵn của hệ thống cũng như rất nhiều nguồn tài nguyên khác Đặc biệt là nó cho phép sử dụng các hàm thư viện API của WINDOW trong các chương trình ứng dụng, làm
Trang 22tốc độ thực hiện chương trình gần như không thua kém gì các chương trình tạo bằng các trình biên dịch khác Nó còn cho phép sử dụng các thư viện liên kết động DLL Trong trường hợp cần thiết, những hàm đòi hỏi tốc độ thực hiện cao có thể được xây dựng bằng các ngôn ngữ cấp cao khác và lưu chúng dưới dạng thư viện DLL
Chính vì vậy, hiện nay ngôn ngữ này được cả những người lập trình không chuyên nghiệp lẫn những lập trình viên chuyên nghiệp sử dụng Đây là
lý do để chúng ta có thể an tâm chọn ngôn ngữ Visual Basic khi lập trình phần mềm đồ họa phục vụ cho công tác thành lập bản đồ số Khi cần thiết có thể sử dụng Visual C++ hay C Builder để tạo các thư viện DLL
Trang 23Chương 2 TẠO TOPOLOGY
Tạo topology là bài toán đ_ được quan tâm và giải quyết từ lâu, nó có rất nhiều ứng dụng khác nhau Tuy vậy, phần lớn bài toán này được giải quyết trong các phần mềm nước ngoài, rất ít phần mềm trong nước giải quyết
được bài toán này một cách hiệu quả, hoặc là tính ổn định không cao do tính phức tạp của các trường hợp biên, hoặc là tốc độ thực hiện còn chưa đạt được yêu cầu, đặc biệt với số vùng lớn Các biện pháp trình bày sau đây sẽ khắc phục những nhược điểm trên
Bài toán tạo Topology có thể được thực hiện theo các bước như sau
- Phát hiện và chỉnh sửa các lỗi
- Khoanh vùng
- Tìm và xác lập mối quan hệ hàng xóm hay liền kề
Người ta có thể tổ chức chương trình đồng thời thực hiện cả ba chức năng trên hoặc xử lý tách rời từng công đoạn một Sau khi phát hiện lỗi, việc chỉnh sửa chúng có thể được thực hiện thủ công hoặc tự động, tuy nhiên có một số lỗi hiển nhiên có thể để chương trình tự động xử lý mà không cần sự can thiệp của người sử dụng
Mục đích của bài toán khoanh vùng là đi tìm các đoạn giới hạn biên của vùng, thường là các đoạn liên tiếp trên biên Để thực hiện được bài toán này, nếu bắt đầu từ một đỉnh trên biên của 1 vùng, ta lần lượt xét các đoạn để tìm đoạn có đầu mút trùng với đầu mút thứ hai của đoạn xuất phát, và quá trình cứ tiếp tục cho đến khi quay được trở về điểm đầu mút ban đầu Tiếp tục, ta lần lượt lát kín mặt phẳng không gian bằng các vùng như vậy chung quanh điểm xét theo chiều kim đồng hồ (hoặc ngược lại) Sau đó, quá trình trên được tiếp tục thực hiện cho các điểm tiếp theo và chỉ dừng khi quét hết các đỉnh
Như vậy, đầu vào của bài toán này sẽ là các đoạn Khái niệm đoạn là một dạng đối tượng dạng tuyến có hai đầu mút phân biệt, có thể là một đoạn
Trang 24thẳng, một cung tròn, một đường đa giác, một đoạn đường cong Bezier hay Spline Quy trình và thuật toán dưới đây được áp dụng cho trường hợp đầu vào là các đoạn thẳng hoặc các đường đa giác, tuy nhiên đối với các trường hợp tổng quát hơn, cách giải quyết là hoàn toàn tương tự
Các thuật toán sắp xếp và tìm kiếm có một vai trò rất quan trọng đối với rất nhiều các bài toán lập trình [9] Chúng tôi đ_ sử dụng các thuật toán này trong cả ba chủ đề: quản lý đối tượng đồ họa, tạo topology và thành lập mô hình số độ cao
2.1 Sắp xếp và tỡm kiếm
Trong các thuật toán sắp xếp chúng ta cần quan tâm đặc biệt đến những thuật toán có độ phức tạp O(nlogn) như QuickSort (sắp xếp nhanh), HeapSort (sắp xếp vun đống), MergeSort (sắp xếp trộn), Trong số các thuật toán đ_ biết, QuickSort là thuật toán có tốc độ trung bình nhanh hơn cả, do
đó nếu chúng ta sử dụng QuickSort trong các bài toán đòi hỏi sắp sếp một số lượng lớn các đối tượng sẽ làm tăng đáng kể hiệu suất của chương trình So với một số thuật toán sắp xếp khác như sắp xếp vun đống, sắp xếp trộn, độ
ổn định của thuật toán QuickSort không cao Vì vậy từ các nghiên cứu lý thuyết của QuickSort, khi sử dụng phải chủ động tránh các tình huống xấu hoặc trong trường hợp cần thiết biến đổi dữ liệu cho thích hợp với thuật toán
QuickSort là thuật toán được A.R Hoare phát minh vào năm 1960 Các ưu điểm của thuật toán Quick Sort là chỉ sử dụng một ngăn xếp phụ nhỏ, chỉ cần khoảng trung bình O(nlogn) thao tác để sắp n phần tử, và có một vòng lặp "trong" rất ngắn
QuickSort thuộc loại "chia để trị" (divide and conquer) Nó thực hiện bằng cách phân hoạch một tập tin thành hai phần, sau đó sắp xếp các phần riêng biệt Giả sử mảng cần sắp xếp là a(n), khi đó thuật toán QuickSort được thực hiện theo trình tự sau:
Trang 25Hàm QuickSort (l, r)
i = Phanhoach (l, r) QuickSort (l, i-1); QuickSort (i+1, r)
Kết thúc hàm
Tham số l và r không giới hạn các tập tin con trong tập tin gốc cần sắp xếp; nếu gọi QuickSort(1,N) sẽ sắp toàn bộ tập tin
Thủ tục "Phanhoach" sẽ tổ chức lại mảng thỏa m_n ba điều kiện sau:
- phần tử a(i) đặt ở vị trí cuối cùng của nó trong mảng với i nào đó
- tất cả các phần tử trong a(l), , a(i-1) nhỏ hơn hay bằng a(i)
- tất cả các phần tử trong a(i+1), , a(r) lớn hơn hay bằng a(i)
Đầu tiên chọn tùy ý a(r) là phần tử sẽ rơi vào vị trí đặt cuối cùng của
nó Kế tiếp, quét từ trái của mảng cho đến khi gặp một phần tử lớn hơn a(r),
và quét từ đầu phải cho đến khi gặp một phần tử nhỏ hơn a(r) Hai phần tử dừng việc quét dĩ nhiên không đúng vị trí trong mảng được phân hoạch cuối cùng nên phải hoán vị chúng (thực ra tốt nhất nên ngừng việc quét đối với những phần tử bằng a(r), dù là có thể đi vào một số hoán vị không cần thiết) Tiếp theo bảo đảm là tất cả các phần tử trên mảng ở bên trái con trỏ phải lớn hơn a(r) Khi các con trỏ giao nhau, quá trình phân hoạch gần như hoàn tất, còn lại là hoán vị a(r) với phần tử trái nhất của tệp tin con bên phải (phần tử
Có thể giả sử mảng được sắp xếp tăng, trường hợp sắp xếp giảm thì tương tự
Trang 26Để tìm khóa v có trong mảng hay không, trước tiên ta so sánh nó với phần tử
ở vị trí giữa của mảng, nếu v nhỏ hơn thì nó chỉ có thể ở trong một nửa đầu tiên của mảng; nếu v lớn hơn thì nó chỉ có thể ở trong một nửa còn lại của mảng Kế đến áp dụng đệ quy phương pháp này Bởi vì chỉ gọi đệ quy một lần, chúng ta có thể dùng phương pháp lặp
Giả sử mảng a đ_ được sắp xếp tăng theo thứ tự khóa, chúng ta có thể cài đặt hàm tìm kiếm nhị phân BinarySearch như sau:
Hàm BinarySearch(v)
L = 1: R = N : X = (L + R) / 2 Làm tới khi (v = X)
nếu v > X thì L = X nếu v < X thì R = X Lặp
Kết thúc hàm
2.2 Cỏc bài toỏn hỡnh học
Trong bài toán này, đoạn thẳng được xem như một vectơ có chiều từ
đầu mút thứ nhất đến đầu mút thứ hai Khi giải quyết bài toán này, chúng ta cần chú ý đến các trường hợp ba điểm thẳng hàng Theo cách giải quyết trong [10], hàm ccw có ba giá trị 1, -1 và 0, trong đó 1: bên điểm xét ở bên trái, -1 :điểm xét ở bên phải Khi ba điểm thẳng hàng, 1: đầu mút thứ hai nằm giữa, -1: đầu mút thứ nhất nằm giữa, 0: điểm xét nằm trong đoạn thẳng Hàm này được xây dựng trên cơ sở xét dấu của tích có hướng hai vectơ, vectơ thứ nhất là bản thân đoạn thẳng, vectơ thứ hai nối từ điểm thứ hai đến điểm xét
Gọi hai đầu mút của đoạn thẳng là P1(X1,Y1), P2(X2,Y2); điểm xét là P(X,Y), ta có:
Hàm ccw(P1, P2, P)
Nếu (X2- X1) (Y2- Y) - (Y2- Y1) (X2- X) > 0 thì
Trang 27Trong mối quan hệ giữa hai đoạn thẳng, trường hợp thường gặp nhất là bài toán xác định giao điểm Tuy nhiên đôi khi chúng ta chỉ muốn biết chúng
có thực sự giao nhau hay không mà không cần xác định điểm giao Trong trường hợp này, chúng ta chỉ cần kiểm tra điều kiện: hai đầu mút của đoạn thẳng này phải nằm ở hai phía so với đoạn thẳng kia và ngược lại, khi đó hàm ccw của hai đầu mút này sẽ có dấu ngược nhau [10]
Gọi P1, P2 là hai đầu mút của đoạn thẳng thứ nhất; P3, P4 là hai đầu mút của đoạn thẳng thứ hai, điều kiện để hai đoạn thẳng này giao nhau sẽ là:
Hàm InterSect(P1, P2, P3, P4)
Nếu ccw(P1, P2, P3).ccw(P1, P2, P4) ≤ 0 và
ccw(P3, P4, P1).ccw(P3, P4, P2) ≤ 0 thì InterSect có giao
Kết thúc hàm
Trang 282.2.3 Điểm nằm trong đa giỏc
Bài toán này nhằm xác định xem một điểm có nằm trong miền một đa giác khép kín hay không Bài toán Điểm nằm trong đa giác có rất nhiều ứng dụng trong thực tiễn Đây là bài toán cần được giải quyết cho hầu hết các phần mềm đồ họa Bài toán này sẽ được mở rộng để giải quyết các bài toán phức tạp hơn như đoạn nằm trong một đa giác, miền nằm trong một đa giác
Có thể liệt kê một số ứng dụng của các bài toán này:
- Phục vụ cho thao tác chọn đối tượng theo vùng
- Lọc các điểm ngoài biên trong xây dựng mô hình số độ cao
- Phục vụ cho việc xử lý, phân tích các miền
Như vậy, đầu vào của bài toán này sẽ là một điểm và một đường đa giác khép kín cho trước, còn đầu ra của nó là câu trả lời "có" nếu điểm nằm trong, hoặc "không" nếu điểm nằm ngoài vùng có biên là đa giác nói trên
Giải pháp để giải quyết bài toán như sau [10]
- Xác định số lượng các giao điểm của một nửa đường thẳng bất kỳ xuất phát từ điểm xét với đa giác nêu trên
- Nếu số này là lẻ thì điểm xét sẽ nằm trong đa giác
- Còn nếu là chẵn thì điểm xét nằm ngoài
Thông thường, nên lấy nửa đường thẳng này song song với một trục tọa độ
Tuy nhiên cần phải xét các trường hợp biên:
- nửa đường thẳng đi qua một trong số các đỉnh của đa giác
- một trong số các đoạn của đa giác trùng với một phần của nửa đường thẳng này
Ta có thể thay thế nửa đường thẳng này bằng một đoạn thẳng song song với trục hoành, được gọi là đoạn thẳng kiểm tra với đầu mút thứ nhất là
điểm xét, còn đầu mút thứ hai phải nằm ngoài đa giác bằng cách lấy điểm thứ hai có tọa độ X lớn hơn tọa độ X lớn nhất trong số các đỉnh của đa giác Việc
Trang 29loại bỏ các trường hợp biên được thực hiện bằng cách bỏ qua khi đỉnh đa giác rơi trên đoạn thẳng kiểm tra, tức là không tăng biến đếm giao khi gặp các trường hợp này
Trong trường hợp đa giác lồi, tình hình sẽ đơn giản hơn nếu ta sử dụng tính chất không bao giờ có hơn 2 giao điểm với đoạn thẳng kiểm tra
Thuật toán hàm Điểm nằm trong đa giác
Nếu k chẵn thì điểm nằm ngoài
còn nếu k lẻ thì điểm nằm trong
Kết thúc hàm
Trong trường hợp khi đa giác là một hình chữ nhật bài toán trên sẽ trở nên đơn giản hơn nữa Lúc đó điều kiện để điểm nằm trong hình chữ nhật là:Xmin <X<Xmax, Ymin <Y<Ymax ; với Xmin, Ymin, Xmax, Ymax là các giá trị tọa độ cực trị của các đỉnh hình chữ nhật
2.3 Phỏt hiện và chỉnh sửa lỗi
Theo quy trình khoanh vùng như trên, ta thấy ngay rằng, cần phải loại
bỏ một số trường hợp gây trở ngại cho quá trình khoanh vùng
Các thao tác chuẩn bị cho việc khoanh vùng có thể được tiến hành song song với việc phát hiện và chỉnh sửa lỗi
Nếu cấu trúc dữ liệu các đoạn được tổ chức dưới dạng danh sách các chỉ số trỏ đến một tập hợp điểm (cách tổ chức dữ liệu theo kiểu này sẽ làm giảm bộ nhớ cần thiết để chứa các đoạn) thì thao tác này sẽ được phân làm hai bước:
Trang 30Nhập điểm, sắp xếp và lọc điểm trùng
Sau khi nhập điểm là tọa độ các đầu mút của các đoạn, việc sắp xếp
được thực hiện theo thứ tự: đầu tiên theo X, sau đó theo Y đối với các điểm
có X giống nhau Việc sắp xếp theo X chúng tôi đ_ sử dụng phương pháp QuickSort, còn khi sắp xếp theo Y, vì số điểm trong mỗi đoạn cần sắp nhỏ hơn nhiều, nên có thể sắp xếp theo các phương pháp khác hiệu quả hơn Việc phát hiện và lọc điểm trùng được tiến hành song song với quá trình sắp xếp theo Y, các điểm trùng sẽ bị loại bỏ và các điểm còn lại sẽ được dồn lên trên
Độ phức tạp của bước này phụ thuộc vào việc sắp xếp, vì ta dùng QuickSort nên về mặt trung bình độ phức tạp sẽ là O(nlogn)
Kết quả ta thu được một danh sách điểm đ_ được sắp xếp với số lượng
điểm Nđ
Nhập cạnh, sắp xếp, lọc cạnh trùng rồi sắp xếp theo góc nghiêng ν
Sau khi thực hiện việc sắp xếp và lọc điểm trùng, các đầu mút của các
đoạn có chỉ số khác nhau sẽ phải trỏ tới các điểm khác nhau Đầu tiên, khi nhập từng cạnh ta cần thực hiện động tác thay đổi các chỉ số của đầu mút tới các điểm trùng đ_ bị xóa ở bước trên Sau đó sử dụng hàm tìm kiếm nhị phân với khóa là tọa độ đối với danh sách điểm đ_ lọc và sắp ở bước trên để xác
định chỉ số điểm của các đầu mút cạnh nhập Tiếp theo, đến bước lọc cạnh trùng, chúng tôi chỉ cần thao tác trên các chỉ số của đầu mút mà không cần
để ý đến tọa độ Trước hết, đảo chỉ số của các đầu mút cho các cạnh sao cho
đầu mút thứ nhất có chỉ số nhỏ hơn chỉ số của đầu mút thứ 2 hoặc ngược lại
và tiến hành việc sắp xếp cạnh với khóa là các chỉ số của đầu mút thứ nhất, sau đó thực hiện việc sắp xếp với khóa là đầu mút thứ 2 đối với những phần
mà đầu mút thứ nhất trùng nhau, rồi thực hiện việc lọc cạnh trùng tương tự như đối với trường hợp sắp xếp và lọc điểm trùng được trình bày ở trên Kết quả chúng tôi thu được một danh sách cạnh đ_ được sắp xếp theo chỉ số của một đầu mút
Trang 312.3.2 Cỏc đoạn hở, cỏc đoạn giao nhau
Một trường hợp thường xảy ra trong thực tế đo đạc ngoại nghiệp, khi một điểm được đo hai lần, do sai số đo và tính toán, dẫn đến tọa độ thu được của điểm này các lần đo có giá trị khác nhau
Như vậy, đối với trường hợp (a), (b) cần loại bớt một giá trị tọa độ, muốn vậy ta cần có chỉ tiêu điểm trùng để khắc phục các trường hợp này
Đối với trường hợp (d), (e) trước hết phải xác định vị trí các đầu mút của các đoạn cụt, đồng thời xác định có tồn tại đoạn trong phạm vi lân cận của đầu mút đó (phạm vi này được xác định bằng một miền hình tròn có bán kính cho trước với tâm là tọa độ của đầu mút), nếu có sẽ thực hiện việc kéo dài hoặc xén đoạn cụt so với đoạn nằm trong miền lân cận, đồng thời phân
đoạn đó làm hai
Trang 32Trường hợp (f) , (g) có thể được phát hiện và khắc phục trong quá trình khoanh vùng dựa theo các giá trị diện tích của vùng, hoặc giá trị góc hợp bởi hai cạnh biên liên tiếp của vùng
2.4 Khoanh vựng
06
05
30 16
17
15
31 35
10 11
15 12
Hình 2-2 Các trường hợp cần loại điểm khi khoanh vùng Thông thường việc tiến hành khoanh vùng sẽ được tiến hành tuần tự từ
điểm này sang điểm khác Các vùng liên quan đến một điểm sẽ được hình thành có thứ tự theo một chiều nhất định, theo chiều quay của kim đồng hồ hoặc ngược lại, và sẽ lát toàn bộ mặt phẳng chung quanh điểm đó Chúng tôi thấy rằng, nếu mỗi đoạn trên mặt phẳng được tính làm hai cạnh có hướng (đi
và về) thì mỗi cạnh này trong quá trình khoanh vùng sẽ được sử dụng đúng một lần; đây chính là điều kiện để nhận biết các vùng đ_ được tạo khi tiến hành khoanh vùng cho các điểm tiếp theo
Tuy nhiên, trong quá trình khoanh vùng như đ_ chỉ ra ở trên sẽ xảy ra một số trường hợp mà ta cần tiến hành loại bỏ các điểm không phù hợp ra khỏi đường biên của vùng được tạo Đối với trường hợp a), khi điểm khởi đầu
để quét nằm trên đỉnh của một đa giác cụt, các điểm cần loại nằm đối xứng ở hai đầu
15 16 17 30 31 35 17 16 15 ===> 17 30 31 35 17
Trang 33Còn đối với trường hợp b), khi điểm xuất phát nằm trên đường biên của vùng trong quá trình khoanh vùng mới gặp phải các đường đa giác cụt, thì các điểm cần loại lại nằm ở giữa
Trên thực tế, danh sách số hiệu đường biên thu được có thể có cả hai trường hợp a) và b), hơn nữa trường hợp b) có thể xuất hiện nhiều lần Do đó, cần phát hiện cả hai trường hợp này để loại bỏ Kết quả của việc loại bỏ có thể cho ta một vùng rỗng, như trường hợp a), khi quét tiếp điểm 15
Trong các vùng thu được sẽ có hai loại vùng khác nhau, dấu hiệu để phân biệt hai loại vùng này chính là dấu của diện tích đại số của vùng, chúng
có dấu ngược nhau
Hình 2-3 Vùng có đảo và vùng ngoài biên Loại 1 là các vùng thông thường (giả sử có dấu +), còn loại 2 là vùng ngoài biên hoặc nằm trong một vùng khác (có dấu -)
Vùng ngoài biên duy nhất chỉ có một và là một tập hợp các vùng có dấu (-) Loại vùng có đảo ở bên trong sẽ bao gồm một vùng có dấu (+) và một tập hợp các đảo ở bên trong vùng đó (cũng có dấu -) Như vậy, đối với những vùng có dấu (-), cần phải thực hiện một phép kiểm tra xem nó có nằm trong một vùng nào trong số các vùng có dấu (+) hay không, nếu có nó sẽ là
đảo của vùng đó, còn nếu không nó sẽ thuộc về vùng ngoài biên
Trang 34có cạnh trùng với nó, sau khi duyệt hết các cạnh ta sẽ có một danh sách các
số hiệu vùng giáp với vùng đ_ nêu
Việc xác lập mối quan hệ hàng xóm cũng được tiến hành ngay trong quá trình khoanh vùng trên bằng một giải pháp rất đơn giản Khi khoanh
được một vùng, chúng tôi gán cho vùng đó một số hiệu bằng chính số thứ tự của vùng, và gán số hiệu này cho tất cả các đoạn thuộc biên của vùng Để tìm vùng tiếp giáp với một cạnh, chỉ cần xác định cạnh có các đầu mút giống với
nó nhưng đảo chiều, rồi xác định các số hiệu vùng tương ứng
Trang 35Chương 3 Lí THUYẾT ĐƯỜNG CONG 3.1 Đường cong tham số bậc ba
Đường cong tham số bậc ba được định nghĩa như sau:
1 t 0 )
(
3 0
trong đó, P(t) là một điểm trên đường cong, như trên Hình 3-1
y
x P(t)
Hình 3-1 Một điểm trên đường cong tham số bậc ba
Phương trình (3.1) khai triển có dạng sau:
P(t) = a3t3 + a2t2 + a1t + a0 (3.2) Phương trình này được tách thành hai phương trình thành phần:
x(t) = a3xt3 + a2xt2 + a1xt + a0xy(t) = a3yt3 + a2yt2 + a1yt + a0y (3.3)
Để có thể giải phương trình (3.3) cần phải xác định tám hệ số chưa biết
aij, còn gọi là các hệ số đại số
Điều khiển hình dạng của đường cong bằng cách thay đổi giá trị hệ số
đại số aij là công việc khó khăn Một phương pháp trực quan hơn là thiết lập các điều kiện biên thích hợp thoả m_n các ràng buộc hình học Các điều kiện biên phải cho phép tạo ra tám phương trình cần thiết để tính giá trị của tám
hệ số Vì vấn đề đang giải quyết là một trong các phép nội suy nên có thể giả
sử là các toạ độ điểm đ_ được biết Một cách giải quyết vấn đề là nội suy từng khúc, khi đó hai điểm được nội suy cùng một lúc bằng một đường cong tham số bậc ba, như chỉ ra trên Hình 3-2
Trang 36P0 P1
P2
P3
P4
Hình 3-2 Phép nội suy tham số bậc ba từng khúc
Từ các toạ độ điểm đầu mút đ_ biết của mỗi phân đoạn có thể thu được bốn trong tám phương trình cần thiết Bốn phương trình còn lại được thiết lập bằng các véc tơ tiếp tuyến tại hai điểm đầu mút của mỗi phân đoạn, như chỉ
ra trên Hình 3-3 Hướng các véc tơ tiếp tuyến xác định độ nghiêng (cosin chỉ phương) của đường cong tại điểm đầu mút và thay đổi độ lớn của véc tơ cho phép thay đổi hình dạng của đường cong
Hình 3-3 Các véc tơ tiếp tuyến tại các điểm đầu mút của phân đoạn
Ví dụ, nếu như độ nghiêng của đường cong tại các điểm mút không
đổi thì việc tăng độ lớn của các véc tơ tiếp tuyến là nguyên nhân thay đổi dạng đường cong như chỉ ra trên Hình 3-4
tiếp tuyến tại P0
tiếp tuyến tại P1
Trang 37Hình 3-4 Thay đổi độ lớn của véc tơ tiếp tuyến dẫn đến sự thay đổi hình
dạng của đường cong tham số bậc ba Quá trình xác định một đường cong bậc ba bằng cách sử dụng các
điểm đầu mút và các véc tơ tiếp tuyến là một dạng của phép nội suy Hermite Mỗi phân đoạn của đường cong bậc ba được tham số hoá từ 0 đến 1, sao cho hai điểm đầu mút đ_ biết tương ứng với các giá trị giới hạn của tham số t, đó
là P(0) và P(1) Thay t=0 và t=1 vào phương trình (3.2) sẽ được sự liên hệ giữa hai véc tơ điểm đầu mút P(0), P(1) và các hệ số đại số như sau:
P(0) = a0P(1) = a3 + a2 + a1 + a0 (3.4)
Để tìm các véc tơ tiếp tuyến, phương trình (3.2) được lấy đạo hàm theo t:
P’(t) = 3a3t2 + 2a2t + a1 (3.5) Các véc tơ tiếp tuyến tại hai điểm đầu mút được xác định bằng cách thay thế t=0 và t=1 vào phương trình này:
P’(0) = a1P’(1) = 3a3 + 2a2 + a1 (3.6) Các hệ số đại số ai trong phương trình (3.2) có thể biểu diễn rõ ràng theo các điều kiện biên - các điểm đầu mút và các véc tơ tiếp tuyến - như sau:
a0 = P(0)
a1 = P’(0)
a2 = - 3P(0) + 3P(1) - 2P’(0) - P’(1)
a3 = 2P(0) - 2P(1) + P’(0) + P’(1) (3.7) Thay các giá trị ai vào phương trình (3.2) và sắp xếp lại ta có:
P(t) = (2t3 - 3t2 + 1)P(0) + (-2t3 + 3t2)P(1) + (t3 - 2t2 + t)P’(0) + (t3 - t2)P’(1) (3.8) Các giá trị P(0), P(1), P’(0), P’(1) được gọi là các hệ số hình học và chúng biểu diễn các lượng véc tơ đ_ biết trong phương trình (3.8) Các hệ số
Trang 38đa thức của các lượng véc tơ này được gọi là hàm liên kết trơn Bằng cách thay đổi tham số t trên hàm liên kết trơn này từ 0 đến 1 ta có thể xác định vài
điểm trên phân đoạn đường cong Chú ý rằng phương trình (3.8) đúng cho mỗi phân đoạn tham số bậc ba của tập hợp các phân đoạn trên Hình 3-2
Các phương trình (3.2) và (3.8) có thể viết lại ở dạng ma trận như sau:
3
1 )
(
a a a a t t t t
(0) P' P(1) P(0)
0 0 0 1
0 1 0 0
1 2 3 3
1 1 2 2 1 )
hoặc ở dạng rút gọn:
P(t) = [t][A] dạng đại số P(t) = [t][M][G] dạng hình học (3.11) Phương trình thứ hai thường được sử dụng trong mô hình hoá hình học Các ma trận [t] và [M] không thay đổi đối với mọi đường cong bậc ba Chỉ có
ma trận [G], xác định các điểm đầu mút và véc tơ tiếp tuyến, có thể thay đổi
để tạo ra đường cong tham số bậc ba mới Ma trận [M]4 x 4 được gọi là “ma trận Hermite”
Trang 39[G] = [M]-1[A] (3.13) trong đó
0 1 0 0
1 1 1 1
1 0 0 0
1
3.2 Đường cong spline bậc ba
Đường cong spline bậc ba là dạng đường cong nội suy và được biểu diễn bởi một đa thức bậc ba có đạo hàm bậc hai liên tục tại các điểm nối chung giữa các phân đoạn
Nếu các phân đoạn của đường cong spline bậc ba được tham số hoá một cách riêng rẽ, sao cho tham số t biến thiên từ 0 đến 1 đối với tất cả các phân đoạn, thì đường cong spline bậc ba chuẩn này là trường hợp đặc biệt của phép nội suy Hermite Phép nội suy này bảo đảm tính liên tục của đạo hàm bậc nhất giữa các phân đoạn Trong đường cong spline bậc ba này, các giá trị đạo hàm bậc nhất được chọn sao cho nó cũng trùng với đạo hàm bậc hai
Hai điều kiện ràng buộc thường được sử dụng cho đường spline bậc ba là:
- Các véc tơ tiếp tuyến P’0 và P’m-1 tại các điểm đầu mút
Tất cả vectơ tiếp tuyến tại đầu mút các phân đoạn sẽ được xác định trên cơ sở giải hệ phương trình:
3 1
0 2 0
1 - m
1 0
'
) (
3
) 3(P P'
P' P' P'
1 0 0
.
1 4 1 0
.
0 1 4 1 0
0 1 4 1
0 0 1
m
m m
P
P P P
(3.15)
Trang 40- Đạo hàm bậc hai tại hai điểm đầu mút P0 và Pm-1 đều bằng 0: đây gọi
là đường cong spline bậc ba tự nhiên Hệ phương trình khi đó sẽ có dạng:
) (
3
) 3(P
) 3(P
) P - 3(P
P' P' P'
2 1 0
.
1 4 1 0
.
0 1 4 1 0
0 1 4 1
0 1 2
2 1 - m
3 1
1 3
0 2
0 1
1 - m
1 0
m
m m
P
P P
N t
P
0 , ( ) )
trong đó, Vi là tập hợp các điểm điều khiển và Ni,k biểu diễn các hàm liên kết trơn bậc (k-1) Một đường cong spline được gọi là cấp k, hoặc có bậc (k-1) khi nó được định nghĩa như một đa thức bậc (k-1) từng khúc có tính liên tục Ck-2 Nói cách khác:
a Bậc của đa thức không vượt quá k-1 trong mỗi đoạn [ti, ti+1]
b Vị trí và các đạo hàm bậc từ 1 đến (k-2) liên tục
Đối với trường hợp B-spline bậc ba:
- k = 4
- Bậc = (k-1) =3
- Tính liên tục bậc hai được thoả m_n
Hàm liên kết trơn thứ i là Ni,k(t) được định nghĩa bằng phương trình đệ quy như sau:
1 , t
N i với ti ≤ t ≤ ti+1
ngược lại