intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Đồ họa máy tính: Bài 7 - Lê Tấn Hùng

Chia sẻ: Ti Vu | Ngày: | Loại File: PDF | Số trang:11

61
lượt xem
5
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bài 7 - Đường cong trong không gian - 3D Curve. Bài giảng trình bày có những nội dung chính sau: Đường cong - Curve, polynomial parametric curves, tính chất cả đường cong bậc 3, đường cong đa thức bậc ba, đường cong Hermite, đường cong Bezier,... Mời các bạn cùng tham khảo.

Chủ đề:
Lưu

Nội dung Text: Bài giảng Đồ họa máy tính: Bài 7 - Lê Tấn Hùng

CNTT-DHBK Hanoi<br /> hunglt@it-hut.edu.vn<br /> <br /> Đường cong - Curve<br /> <br /> Đường cong trong không gian<br /> 3D CURVE<br /> <br /> Why use curves? Quỹ đạo chuyển động của 1 điểm trong<br /> không gian<br /> Đường cong biểu diễn Điểm -curve represents points:<br /> Điểm Biểu diễnvà kiểm soát đường cong -Points representand control-the curve.<br /> Cách tiếp cận này là cơ sở của lĩnh vực Computer Aided Geometric<br /> Design (CAGD).<br /> <br /> (c) SE/FIT/HUT 2002<br /> <br /> (c) SE/FIT/HUT 2002<br /> <br /> Phân loại<br /> <br /> 2<br /> <br /> Biểu diễn Đường cong<br /> <br /> Trên cơ sở ràng buộc giữa điểm và đường trong cả ứng dụng khoa học và<br /> thiết kế ta co thể phân làm 2 loại:<br /> Xấp xỉ-Approximation -<br /> <br /> Được ứng dụng trong mô hình hoá hình học<br /> Nội suy-Interpolation<br /> <br /> Trong thiết kế nôi suy là cần thiết với các đối tượng nhưng không phù hợp<br /> với các đối tượng có hình dáng bất kỳ "free form“.<br /> <br /> (c) SE/FIT/HUT 2002<br /> <br /> 3<br /> <br /> Đường cong tham biến<br /> <br /> Tường minh y=f(x)<br /> y = f(x), z = g(x)<br /> impossible to get multiple values for a single<br /> x<br /> • break curves like circles and ellipses<br /> into segments<br /> not invariant with rotation<br /> • rotation might require further segment<br /> breaking<br /> problem with curves with vertical tangents<br /> • infinite slope is difficult to represent<br /> Không tường minh f(x,y)=0 - Implicit equations:<br /> f(x,y,z) = 0<br /> equation may have more solutions than we<br /> want<br /> • circle: x² + y² = 1, half circle: ?<br /> problem to join curve segments together<br /> • difficult to determine if their tangent<br /> directions agree at their joint point<br /> <br /> (c) SE/FIT/HUT 2002<br /> <br /> 4<br /> <br /> Parametric Curves<br /> <br /> Biểu diễn các đường cong tham biến Parametric representation:<br /> <br /> We have seen the parametric form for a line:<br /> <br /> x = x0t + (1 − t ) x1<br /> <br /> x = x(t), y = y(t), z = z(t)<br /> overcomes problems with explicit and implicit forms<br /> no geometric slopes (which may be infinite)<br /> parametric tangent vectors instead (never infinite)<br /> a curve is approximated by a piecewise polynomial curve<br /> <br /> y = y0t + (1 − t ) y1<br /> z = z0t + (1 − t ) z1<br /> <br /> Note that x, y and z are each given by an equation that<br /> involves:<br /> <br /> Define a parameter space<br /> 1D for curves<br /> 2D for surfaces<br /> <br /> The parameter t<br /> Some user specified control points, x0 and x1<br /> <br /> Define a mapping from parameter space to 3D points<br /> A function that takes parameter values and gives back 3D points<br /> <br /> This is an example of a parametric curve<br /> <br /> The result is a parametric curve or surface<br /> <br /> Mapping F :t → (x, y, z)<br /> 0<br /> <br /> 1<br /> <br /> t<br /> (c) SE/FIT/HUT 2002<br /> <br /> 5<br /> <br /> (c) SE/FIT/HUT 2002<br /> <br /> 6<br /> <br /> 1<br /> <br /> CNTT-DHBK Hanoi<br /> hunglt@it-hut.edu.vn<br /> <br /> Đường cong đa thức bậc ba<br /> <br /> Đường cong bậc 3<br /> <br /> Phải đảm bảo là đường cong không gian với 3 trục toạ độ x, y, z<br /> tránh được những tính toán phức tạp và những phần nhấp nhô ngoài ý<br /> muốn xuất hiện ở những đường đa thức bậc cao<br /> Why cubic?<br /> <br /> x = a1 + b1u + c1u2 + d1u3<br /> y = a2 + b2u + c2u2 + d2u3<br /> z = a3 + b3u + c3u2 + d3u3<br /> Với 3 điểm P0, P1, P2, P3 phương trình<br /> xác định<br /> P'1<br /> <br /> p3<br /> P1<br /> <br /> p2<br /> P'0<br /> <br /> P0<br /> <br /> P0<br /> <br /> 7<br /> <br /> (c) SE/FIT/HUT 2002<br /> <br /> Hermite Spline<br /> <br /> P1<br /> <br /> (c) SE/FIT/HUT 2002<br /> <br /> 8<br /> <br /> Đường cong Hermite<br /> <br /> A spline is a parametric curve defined by control points<br /> The term spline dates from engineering drawing, where a spline was a piece<br /> of flexible wood used to draw smooth curves<br /> The control points are adjusted by the user to control the shape of the curve<br /> <br /> p = p(u) = k0 + k1u + k2u2 + k3u3<br /> p(u) = ∑kiui i∈n<br /> <br /> Phương pháp Hermite dựa trên cơ sở của cách biểu diễn Ferguson hay Coons<br /> năm 60<br /> A Hermite spline is a curve for which the user provides:<br /> The endpoints of the curve<br /> The parametric derivatives of the curve at the endpoints<br /> • The parametric derivatives are dx/dt, dy/dt, dz/dt<br /> That is enough to define a cubic Hermite spline, more derivatives are required<br /> for higher order curves<br /> <br /> p0 và p1 ta có hai độ dốc p0’ và p1’ với u = 0 và u = 1 tại hai<br /> điểm đầu cuối của đoạn [0,1].<br /> We have constraints:<br /> <br /> (c) SE/FIT/HUT 2002<br /> <br /> The curve must pass through p0 when u=0<br /> The derivative must be p’0 when u=0<br /> The curve must pass through p1 when u=1<br /> The derivative must be p’1 when u=1<br /> <br /> 9<br /> <br /> (c) SE/FIT/HUT 2002<br /> <br /> 10<br /> <br /> Basis Functions<br /> A point on a Hermite curve is obtained by multiplying each control point<br /> by some function and summing<br /> The functions are called basis functions<br /> <br /> Thay vào:<br /> p = p(u) = p0(1-3u2+2u3) + p1(3u2-2u3)<br /> + p0’(u-2u2+u3) + p1’(-u2+u3)<br /> <br /> p = p(u) = [ 1 u u2 u3 ]<br /> <br /> (c) SE/FIT/HUT 2002<br /> <br /> 11<br /> <br /> (c) SE/FIT/HUT 2002<br /> <br /> 12<br /> <br /> 2<br /> <br /> CNTT-DHBK Hanoi<br /> hunglt@it-hut.edu.vn<br /> <br /> Đường cong Bezier<br /> Sử dụng điểm và các vector kiểm soát được độ dốc của đường<br /> cong tại nhưng điểm mà nó đi qua.(Hermit)<br /> không được thuận lợi cho việc thiết kế tương tác, không tiếp cận<br /> vào các độ dốc của đường cong bằng các giá trị số (Hermite).<br /> Paul Bezier, RENAULT, 1970 đường và bề mặt UNISURF<br /> <br /> po, p3 tương đương với p0, p1 trên đường Hermite. diểm trung<br /> gian p1, p2 được xác định bằng 1/3 theo độ dài của vector tiếp<br /> tuyến tại điểm po và p3<br /> p0’ = 3(p1 – p0)<br /> p3’ = 3(p3 – p2)<br /> p = p(u) = p0(1-3u2+2u3) + p1(3u2-2u3) + p0’(u-2u2+u3) + p1’(u 2 + u 3)<br /> p = p(u) = p0(1 - 3u + 3u2 - u3) + p1(3u-6u2-3u3)<br /> + p2(3u2 - 3u3) + p3u3<br /> <br /> 13<br /> <br /> (c) SE/FIT/HUT 2002<br /> <br /> 14<br /> <br /> (c) SE/FIT/HUT 2002<br /> <br /> Biểu diễn Ma trận<br /> <br /> Ưu điểm<br /> <br /> 1.2<br /> 1<br /> 0.8<br /> <br /> B0<br /> B1<br /> B2<br /> B3<br /> <br /> 0.6<br /> 0.4<br /> 0.2<br /> 0<br /> <br /> 0<br /> 0<br /> 1<br /> <br /> 0<br /> − 3 3<br /> p = p(u) = [ 1 u u2 u3 ]  3 − 6 3<br /> <br /> − 1 3 − 3<br /> (c) SE/FIT/HUT 2002<br /> <br /> 0<br /> <br /> 0<br /> 0<br /> <br /> 1<br /> <br /> dễ dàng kiểm soát hi`nh dạng của đường cong hơn vector tiếp<br /> tuyến tại p0’ và p1’ của Hermite.<br /> Nằm trong đa giác kiểm soát với số điểm trung gian tuỳ ý( số<br /> bậc tuỳ ý)<br /> đi qua điểm đầu và điểm cuối của đa giác kiểm soát, tiếp xúc với<br /> cặp hai vector của đầu cuối đó<br /> <br />  p0 <br /> p <br />  1<br />  p2 <br />  <br />  p3 <br /> 15<br /> <br /> Example<br /> Bezier Curves<br /> <br /> 16<br /> <br /> (c) SE/FIT/HUT 2002<br /> <br /> Sub-Dividing Bezier Curves<br /> M12<br /> <br /> P1<br /> M012<br /> <br /> [UW]<br /> <br /> M0123<br /> <br /> P2<br /> M123<br /> <br /> M01<br /> <br /> M23<br /> <br /> P0<br /> <br /> (c) SE/FIT/HUT 2002<br /> <br /> 17<br /> <br /> P3<br /> <br /> (c) SE/FIT/HUT 2002<br /> <br /> 18<br /> <br /> 3<br /> <br /> CNTT-DHBK Hanoi<br /> hunglt@it-hut.edu.vn<br /> <br /> Sub-Dividing Bezier Curves<br /> <br /> Sub-Dividing Bezier Curves<br /> <br /> P1<br /> <br /> P2<br /> <br /> P0<br /> <br /> Step 1: Find the midpoints of the lines joining the original control vertices.<br /> Call them M01, M12, M23<br /> Step 2: Find the midpoints of the lines joining M01, M12 and M12, M23. Call<br /> them M012, M123<br /> Step 3: Find the midpoint of the line joining M012, M123. Call it M0123<br /> The curve with control points P0, M01, M012 and M0123 exactly follows the<br /> original curve from the point with t=0 to the point with t=0.5<br /> The curve with control points M0123 , M123 , M23 and P3 exactly follows the<br /> original curve from the point with t=0.5 to the point with t=1<br /> <br /> P3<br /> <br /> 19<br /> <br /> (c) SE/FIT/HUT 2002<br /> <br /> de Casteljau’s Algorithm<br /> <br /> P2<br /> <br /> n<br /> <br /> p(u ) = ∑ Bi ,n (u ) pi<br /> n<br /> <br /> p′(u ) = n ∑ Bi ,n −1 (u )( pi +1 − Pi )<br /> i =0<br /> <br /> M23<br /> <br /> Bi ,n (u ) = C ( n, i )u i (1 − u ) n −i<br /> <br /> t=0.25<br /> <br /> p0 ... pn : vector vị trí của đa giác n+1 đỉnh<br /> n!<br /> C( n, i) =<br /> i! ( n − i)!<br /> <br /> M01<br /> P3<br /> (c) SE/FIT/HUT 2002<br /> <br /> Tổng quát hoá với n +1 điểm kiểm soát<br /> i =0<br /> <br /> M12<br /> <br /> P0<br /> <br /> 20<br /> <br /> Biểu thức Bezier-Bernstain<br /> <br /> You can find the point on a Bezier curve for any parameter value t with a similar<br /> algorithm<br /> Say you want t=0.25, instead of taking midpoints take points 0.25 of the way<br /> <br /> P1<br /> <br /> (c) SE/FIT/HUT 2002<br /> <br /> 21<br /> <br /> (c) SE/FIT/HUT 2002<br /> <br /> 22<br /> <br /> Review:<br /> Bézier Curve Prop’s [1/6]<br /> <br /> Tính chất<br /> P0 và Pn nằm trên đường cong.<br /> Đường cong liên tục và có đạo hàm liên tục tất cả các bậc<br /> Tiếp tuyến của đường cong tại điểm P0 là đường P0P1 và tại<br /> Pn là đường Pn-1Pn .<br /> Đường cong nằm trong đường bao lồi convex hull của các<br /> điểm kiểm soát.<br /> This is because each successive Pi(j) is a convex<br /> combination of the points Pi(j-1) and Pi-1(j-1) .<br /> P1 ,P2 , … ,Pn-1 nằm trên đường cong khi và chỉ khi<br /> đường cong là đoạn thẳng.<br /> (c) SE/FIT/HUT 2002<br /> <br /> 23<br /> <br /> We looked at some properties of Bézier curves.<br /> Generally “Good” Properties<br /> Endpoint Interpolation<br /> Smooth Joining<br /> Affine Invariance<br /> Convex-Hull Property<br /> <br /> Generally “Bad” Properties<br /> Not Interpolating<br /> No Local Control<br /> <br /> (c) SE/FIT/HUT 2002<br /> <br /> 24<br /> <br /> 4<br /> <br /> CNTT-DHBK Hanoi<br /> hunglt@it-hut.edu.vn<br /> <br /> Problem with Bezier Curves<br /> <br /> Invariance<br /> Translational invariance means that translating the control points and then<br /> evaluating the curve is the same as evaluating and then translating the curve<br /> Rotational invariance means that rotating the control points and then evaluating<br /> the curve is the same as evaluating and then rotating the curve<br /> These properties are essential for parametric curves used in graphics<br /> It is easy to prove that Bezier curves, Hermite curves and everything else we will<br /> study are translation and rotation invariant<br /> Some forms of curves, rational splines, are also perspective invariant<br /> <br /> To make a long continuous curve with Bezier segments<br /> requires using many segments<br /> Maintaining continuity requires constraints on the control<br /> point positions<br /> The user cannot arbitrarily move control vertices and automatically<br /> maintain continuity<br /> The constraints must be explicitly maintained<br /> It is not intuitive to have control points that are not free<br /> <br /> (c) SE/FIT/HUT 2002<br /> <br /> Can do perspective transform of control points and then evaluate the curve<br /> <br /> 25<br /> <br /> Longer Curves<br /> <br /> 26<br /> <br /> (c) SE/FIT/HUT 2002<br /> <br /> Piecewise Bezier Curve<br /> <br /> A single cubic Bezier or Hermite curve can only capture a small class of curves<br /> <br /> P0,1<br /> <br /> At most 2 inflection points<br /> <br /> P0,2<br /> <br /> One solution is to raise the degree<br /> <br /> “knot”<br /> <br /> Allows more control, at the expense of more control points and higher degree<br /> polynomials<br /> Control is not local, one control point influences entire curve<br /> <br /> P0,0<br /> <br /> Total curve can be broken into pieces, each of which is cubic<br /> Local control: Each control point only influences a limited part of the curve<br /> Interaction and design is much easier<br /> <br /> (c) SE/FIT/HUT 2002<br /> <br /> P1,3<br /> <br /> P0,3<br /> P1,0<br /> <br /> Alternate, most common solution is to join pieces of cubic curve together into<br /> piecewise cubic curves<br /> <br /> P1,1<br /> <br /> 27<br /> <br /> Continuity<br /> <br /> P1,2<br /> <br /> (c) SE/FIT/HUT 2002<br /> <br /> 28<br /> <br /> Đường bậc ba Spline<br /> <br /> When two curves are joined, we typically want some degree of continuity<br /> across the boundary (the knot)<br /> C0, “C-zero”, point-wise continuous, curves share the same point where they<br /> join<br /> C1, “C-one”, continuous derivatives, curves share the same parametric<br /> derivatives where they join<br /> C2, “C-two”, continuous second derivatives, curves share the same parametric<br /> second derivatives where they join<br /> Higher orders possible<br /> <br /> Question: How do we ensure that two Hermite curves are C1 across a<br /> knot?<br /> Question: How do we ensure that two Bezier curves are C0, or C1, or C2<br /> across a knot?<br /> <br /> (c) SE/FIT/HUT 2002<br /> <br /> 29<br /> <br /> Spline đi qua n điểm cho trước mà mỗi đoạn là đường bậc ba<br /> độc lập có độ dốc và độ cong liên tục tại mỗi điểm kiểm soát<br /> hay điểm nút<br /> Với n điểm:n-1 đoạn với mỗi đoạn 4 vector hệ số 4(n-1) cho<br /> n-1 đoạn, và 2(n-1) điều kiện biên và n-2 điều kiện về độ dốc<br /> cùng n-2 về độ cong<br /> Spline dùng để chỉ phương pháp biểu diễn đường cong mềm<br /> thông qua các đoạn cong tham biến bậc ba với các điều kiện<br /> liên tục tại các điểm đầu nút<br /> <br /> (c) SE/FIT/HUT 2002<br /> <br /> 30<br /> <br /> 5<br /> <br />
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2