B splines và ứng dụng trong đồ họa máy tính

60 17 0
B splines và ứng dụng trong đồ họa máy tính

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

ĐẠI HỌC THÁI NGUYÊN TRƢỜNG ĐẠI HỌC CNTT&TT ép\\ Nguyễn Thanh Hải B-SPLINE VÀ ỨNG DỤNG TRONG ĐỒ HỌA MÁY TÍNH Chun ngành: Khoa học máy tính Mã số: 60 48 01 LUẬN VĂN THẠC SĨ CHUYÊN NGÀNH KHOA HỌC MÁY TÍNH Người hướng dẫn khoa học: PGS TS ĐẶNG QUANG Á Thái Nguyên - 2011 Số hóa Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn LỜI CAM ĐOAN Tôi xin cam đoan : Những nội dung luận văn thực hướng dẫn trực tiếp PGS TS Đặng Quang Á Mọi tham khảo dùng luận văn trích dẫn rõ ràng tên tác giả, tên cơng trình, thời gian, địa điểm cơng bố Số hóa Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn MỤC LỤC MỞ ĐẦU 1 Đặt vấn đề Đối tượng phạm vi nghiên cứu Hướng nghiên cứu đề tài Những nội dung nghiên cứu Phương pháp nghiên cứu Ý nghĩa khoa học đề tài Chƣơng Lý thuyết mơ hình hóa hình học 1.1 Cơ sở mơ hình hóa hình học 1.1.1 Các phép biến đổi tọa độ 2D 1.1.2 Phép biến đổi đồng 1.1.3 Các phép biến đổi tọa độ 3D 1.1.4 Phép ánh xạ 1.1.5 Khung tọa độ 1.2 Đường cong – Curve 1.3 Mặt cong - Surface 13 1.3.1 Biểu diễn mặt cong 13 1.3.2 Mơ hình hóa mặt cong 14 Chƣơng Đƣờng cong, mặt cong B-Spline 16 2.1 Thuật toán Casteljau 16 2.2 Đường cong mặt cong Bezier 18 2.2.1 Đường cong Bezier 19 2.2.2 Mặt cong Bezier 23 2.3 Đường cong B-Spline 25 2.3.1 Đánh giá đường cong Bezier 25 2.3.2 Đường cong B-Spline 27 Số hóa Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn 2.3.2.1 Hàm sở B-Spline 27 2.3.2.2 Tính chất đường cong B-Spline 29 2.3.2.3 Đường cong B-Spline tuần hoàn 30 2.3.2.4 Đường cong B-Spline khơng tuần hồn 32 2.3.2.5 Đường cong B-Spline hữu tỷ không 32 2.4 Mặt cong B-Spline 34 Chƣơng Ứng dụng B-Spline mơ hình hóa vật thể 3D 35 3.1 Bài tốn mơ hình hóa vật thể 3D 35 3.2 Phép nội suy mịn hóa đường cong 36 3.2.1 Nối điểm chiều 37 3.2.2 Xấp xỉ hóa hai chiều 38 3.3 Tìm điểm kiểm sốt cho đường cong B-Spline 38 3.4 Vẽ số đối tượng 3D 39 3.4.1 Vẽ táo 39 3.4.2 Vẽ lọ hoa 44 3.4.3 Vẽ máy bay 46 3.4.4 Giao diện chương trình 50 KẾT LUẬN 51 TÀI LIỆU THAM KHẢO 52 Số hóa Trung tâm Học liệu – Đại học Thái Ngun http://www.lrc-tnu.edu.vn DANH SÁCH HÌNH VẼ Hình 1.1: Phép biến đổi tọa độ 2D Hình 1.2: Phép biến đối tọa độ hình thức hệ tọa độ chuyển động Hình 1.3: Biểu diễn đường trịn đơn vị 11 Hình 1.4: Mơ hình bề mặt kẻ 14 Hình 1.5 Mơ hình mặt trịn xoay 15 Hình 1.6: Mơ hình mặt trượt 15 Hình 2.1: Thuật tốn Casteljau cho ba điểm 17 Hình 2.2: Đường cong Bezier bậc 1, 2, 20 Hình 2.3: Mặt cong Bezier 25 Hình 2.4: Các thành phần đa thức riêng phần 26 Hình 2.5: Đường cong B-Spline 29 Hình 2.6: Mặt cong B-Spline 34 Hình 3.1 Phép nối điểm mịn hóa đường cong 37 Hình 3.2 Xác định đa giác kiểm sốt đường cong B-Spline qua số điểm biết nằm đường cong 38 Hình 3.3: Biểu diễn táo 44 Hình 3.4: Biểu diễn lọ hoa 45 Hình 3.5: Biểu diễn máy bay 49 Hình 3.6: Giao diện chương trình 50 Số hóa Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn DANH SÁCH CÁC BẢNG Bảng 1.1: Phép quay 3D quanh trục tọa độ Bảng 2.1: Vector nút 31 Bảng 2.2: Vector nút đường cong B-Spline bậc 2,3,4 khơng tuần hồn 32 Số hóa Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn LỜI CẢM ƠN Với tình cảm chân thành, tơi xin bày tỏ lòng biết ơn sâu sắc đến Ban giám hiệu thầy cô giáo trường Đại học Công nghệ thông tin Truyền thơng – Đại học Thái Ngun, tồn thể thầy giáo, cô giáo Viện Công nghệ thông tin – Viện Khoa học Công nghệ Việt Nam nhiệt tình giảng dạy, giúp đỡ tơi q trình học tập, nghiên cứu Qua tơi xin gửi lời cảm ơn bạn bè, đồng nghiệp động viên, giúp đỡ tạo điều kiện thuân lợi cho thời gian học tập nghiên cứu để hồn thành luận văn Đặc biệt, tơi xin bày tỏ lòng biết ơn sâu sắc tới PGS TS Đặng Quang Á trực tiếp tận tình hướng dẫn, giúp đỡ tơi suốt q trình nghiên cứu hồn thành luận văn Mặc dù có nhiều cố gắng, luận văn khó tránh khỏi thiếu sót, khiếm khuyết Kính mong góp ý, bảo quý thầy, cô bạn Xin chân trọng cảm ơn Thái Nguyên, tháng năm 2011 Tác giả Nguyễn Thanh Hải Số hóa Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn MỞ ĐẦU Đặt vấn đề Công nghệ thông tin ngày phát triển đồ họa máy tính lĩnh vực công nghệ phát triển nhanh Đồ họa áp dụng rộng rãi nhiều lĩnh vực khác từ khoa học, công nghệ, y tế, kỹ thuật đến giải trí Đồ họa máy tính phát triển dựa kết hình học họa hình, hình học vi phân với nhiều kết tốn học khác đặc biệt bao gồm đại số giải tích Hiện nay, với phát triển phần cứng máy tính, đồ họa phát triển nhanh hơn, tảng sở mơ hình hóa hình học Có nhiều tốn đặt đồ họa máy tính Một tốn xử lý đường cong mặt cong B-Splines dạng đường cong mặt cong mơ hình hóa hình học nhiều tác giả giới nghiên cứu Đề tài tìm hiểu B-Splines, từ đưa ứng dụng đồ họa máy tính, cụ thể ứng dụng tốn mơ hình hóa vật thể 3D Đối tƣợng phạm vi nghiên cứu  Đối tượng: Cơ sở mơ hình hóa hình học, B-Splines, Ứng dụng BSplines đồ họa  Phạm vi: Đề tài tập trung tìm hiểu lý thuyết B-Splines mơ hình hóa hình học Hƣớng nghiên cứu đề tài  Tổng hợp số kết hình học vi phân phép biến đổi hình học sử dụng mơ hình hóa hình học Trong tập trung chủ yếu đến lý thuyết đường cong, mặt cong phép biến đổi tọa độ  Tìm hiểu lý thuyết mơ hình hóa thực thể hình học bao gồm đường cong mặt cong Số hóa Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn  Tìm hiểu lý thuyết B-Splines  Từ kết lý thuyết B-Splines, ứng dụng vào tốn mơ hình hóa vật thể 3D Những nội dung nghiên cứu  Tìm hiểu kiến thức tổng quan mơ hình hóa hình học  Tìm hiểu lý thuyết đường cong B-Splines, mặt cong B-Splines  Ứng dụng B-Splines vào tốn mơ hình hóa vật thể 3D Phƣơng pháp nghiên cứu  Phương pháp chuyên gia: Tham khảo ý kiến thầy cô lĩnh vực đồ họa, đảm bảo tốn học cho máy tính hệ thống tính tốn lĩnh vực có liên quan  Thu thập, nghiên cứu tài liệu từ giáo trình, báo, tạp chí, giảng  Phương pháp thực nghiệm: Cài đặt ứng dụng ngôn ngữ MATLAB Ý nghĩa khoa học đề tài Kết nghiên cứu đề tài đưa ứng dụng cụ thể B-Splines tốn mơ hình hóa vật thể 3D Bên cạnh đó, đề tài tổng hợp kết nghiên cứu hình học vi phân phép biến đổi hình học sử dụng mơ hình hóa hình học, đặc biệt kết BSplines Số hóa Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn Chƣơng Lý thuyết mơ hình hóa hình học Chƣơng dành trình bày về: Các kết hình học vi phân phép biến đổi hình học sử dụng mơ hình hóa hình học Lý thuyết đường mặt cong phép biến đổi tọa độ không gian 3D 1.1 Cơ sở mơ hình hóa hình học 1.1.1 Các phép biến đổi tọa độ 2D Tất phép biến hình ĐHMT mơ hình hóa hình học dựa hình thức biến đổi tọa độ dịch chuyển tịnh tiến, lấy tỷ lệ quay [5] Xét điểm P'(x', y') vị trí điểm P(x, y) sau phép biến đổi tọa độ Tọa độ (x', y') điểm P' tương ứng với vector dịch chuyển t(tx, ty) (Hình 1.1a), hệ số tỷ lệ s(sx, sy) (Hình 1.1b); góc xoay θ ngược chiều quay kim đồng hồ (Hình 1.1c) xác định sau: x' = x + tx; y' = y + ty (1.1) x' = sxx; y' = syy (1.2) x' = xcosθ – ysinθ; y' = xsinθ + ycosθ (1.3) y y y ’ P (x’,y’) P’(x’,y’) ’ P (x’,y’) r ty P(x,y) θ tx P(x,y) o r P(x,y) x x o α b a x o c Hình 1.1: Phép biến đổi tọa độ 2D Số hóa Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn 3.4 Vẽ số đối tƣợng 3D Thiết kế đối tượng phần trung tâm quan trọng đồ họa máy tính Có nhiều phương pháp để xây dựng đối tượng hình học Ở đây, ta tìm hiểu phương pháp xây dựng dựa mơ hình B-Spline phân cấp (hierarchical building system) [7] Xét ví dụ cụ thể máy bay gồm phận bánh xe, thân, cánh … cánh quạt xoay cất cánh thân đứng n Mơ hình máy bay biểu diễn hàng chục chi tiết hình học Như để mơ hình hóa đối tượng đồ họa ta xây dựng hệ thống bao gồm hình đơn giản đối tượng sau kết hợp lại với để vật thể sinh động Các mơ hình xây dựng hai phương pháp:  Mô tả bề mặt: Có thể mặt đơn giản hình cầu mặt B-Spline phức tạp  Xây dựng khối hình, khung hình, sau chuyển đổi sang bề mặt, kết hợp với bề mặt Để lập trình Matlab, ta gom nhóm mơ hình (như hình cầu, hình trụ ) hàm Matlab Sau sử dụng hàm renderpatch để chuyển đổi hình ảnh sang dạng bóng mờ, hàm renderwire để chuyển đổi khung hình 3.4.1 Vẽ táo Function Apple: function [cordX, cordY, cordZ] = apple(sizeTheta, sizeFai) if nargin ==0 sizeTheta = 30; sizeFai = 40; elseif nargin < 39 Số hóa Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn error('NotEnoughArugments', ''); end; theta = linspace(0, pi, sizeTheta)'; nudge = 0.0001; fai = linspace(0 + nudge, pi/2 - nudge, round(sizeFai/4)); a = 9/4; b = 9/80; A = 1+(a-1)*(sin(theta).^2) * (sin(fai).^2); B = (sin(theta).^2.*cos(theta).^3) * (1 + (b-1)*(sin(fai).^2)); rou = zeros(size(A)); for iLoop = 1:numel(A); curA = A(iLoop); curB = B(iLoop); polyFactors = [curA^3, -curB, -3*curA^2, 0, 3*curA, 0, -1]; solutions = roots(polyFactors); realRou = real(solutions(abs(imag(solutions))< 1e-9)); rou(iLoop) = realRou(realRou>0); end x = rou * (sin(theta) * cos(fai)); y = rou * (sin(theta) * sin(fai)); z = rou * (cos(theta) * ones(size(fai))); cordX = [x, -fliplr(x) , -x, fliplr(x)]; cordY = [y, fliplr(y) , -y, -fliplr(y)]; cordZ = [z, fliplr(z), z, fliplr(z)]; 40 Số hóa Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn Đoạn code dùng để vẽ lọ hoa, sử dụng hàm paintSurface(var)ở close all; [x,y,z] = apple; bottomZ = min(z(:)); radius = abs(bottomZ); axis vis3d axis off daspect([1.6, 1, 1.875]); hold on; markerColor = [0.8, 0.8, 0.8]; lineColor = [0.7, 0.7, 0.7]; figWidth = 600 figHeight = 500; screenSize = get(0, 'ScreenSize'); X0 = (screenSize(3)-figWidth)/2; Y0 = (screenSize(4)-figHeight)/2; set(gcf, 'Position', [X0,Y0, figWidth, figHeight]); camtarget([0, 0, 0]); set(gcf,'Renderer','zbuffer'); set(gcf,'DoubleBuffer','on'); set(gcf, 'color', [100 105 100]/255); startAZ = 20; satrtEL = 40; view(startAZ, satrtEL); for iLoop = 1:size(x, 1) plot3(x(iLoop, :), y(iLoop,:), z(iLoop, :), 'Marker', '.', 'MarkerEdgeColor', markerColor, 'LineStyle', 'none'); 41 Số hóa Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn end for iLoop = 1:size(x, 1) plot3(x(iLoop, :), y(iLoop,:), z(iLoop, :), 'color', lineColor, 'LineStyle', '-'); end for iLoop = 1:size(x, 2) plot3(x(:, iLoop), y(:, iLoop), z(:, iLoop), 'color', lineColor, 'LineStyle', '-'); end for i=1:36 camorbit(10,0,'data'); end delete(get(gca, 'Children')); camlight left; newLineColor = [0.7, 0.4, 0.4]; h = surf(x,y,z, 'EdgeColor', newLineColor, 'FaceColor', 'r'); for i=1:36 camorbit(10,0,'data'); end mediumColor = [0.8, 0.3, 0.3]; set(h, 'EdgeColor', mediumColor,'FaceLighting','gouraud'); for i=1:36 camorbit(10,0,'data'); drawnow; end 42 Số hóa Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn set(h, 'EdgeColor', 'none'); drawnow; deltaZ = linspace(-.3, 0, 5); deltaZ = [fliplr(deltaZ), deltaZ]; deltaZ = repmat(deltaZ, 1, 3); zlim('manual'); for iLoop = 1:length(deltaZ) curDeltaZ = deltaZ(mod(iLoop,length(deltaZ))+1); ratio = (radius+curDeltaZ)*radius; newZ = z*ratio + curDeltaZ; if exist('h', 'var')&& ishandle(h), delete(h);end; h = surf(x,y, newZ, 'EdgeColor', 'none', 'FaceColor', 'r','FaceLighting','gouraud'); camorbit(-1, 0, 'data'); drawnow; end deltaZ = generateSimulatedBouncingPath; zlim([-1, 3]); rotate3d on Kết ta hình biểu diễn táo sau: 43 Số hóa Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn Hình 3.3: Biểu diễn táo 3.4.2 Vẽ lọ hoa Function paintSurface: function surface=paintSurface(var) if (var>100) var=100; elseif (var10) var=10; elseif (var10) var=10; elseif (var

Ngày đăng: 26/03/2021, 06:54

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan