1. Trang chủ
  2. » Luận Văn - Báo Cáo

Biểu diễn đường và mặt trong không gian kỹ thuật morphing và di động hình trong không gian hai va ba chiều

17 407 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 17
Dung lượng 534,37 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Biểu diễn đường và mặt trong không gian kỹ thuật morphing và di động hình trong không gian hai va ba chiều

Trang 1

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

KHOA TOÁN TIN ỨNG DỤNG

- -

Biểu diễn đường và mặt trong không gian;

Kỹ thuật morphing và di động hình trong không gian hai và ba chiều

Giáo viên hướng dẫn: Nguyễn Hữu Điển Sinh viên thực hiện : Nguyễn Hữu Vượng Lớp: toán 1-k51

Hà Nội, tháng 11 năm 2009

Trang 2

Maple là một chương trình mạnh không chỉ cho việc lập trình tính toán mà còn là một công cụ rất mạnh cho việc vẽ hình trong cả không gian 2 và 3 chiều Với Maple, việc thực hiện công việc minh họa các phương trình toán học sẽ trở nên dễ dàng hơn rất nhiều

0 Mục lục một số tùy chọn của chế độ vẽ trong không gian 2 và 3 chiều

Style= Kiểu vẽ đồ thị: Axes= Trục tọa độ

Line

Point

Patch

Đường thẳng Điểm

Đường đứt

(1)Boxed (2)Framed

(3)Normal (4)None

Hình chữ nhật bao trục tọa độ

Khung có chia du

tỷ lệ Tọa độ chuẩn Chỉ có hình vẽ Symbol= Điểm vẽ là: Color= Biểu thị màu hình

vẽ Projection=r 0<r<1, góc chiếu Scaling= Chế độ điều chỉnh

(1)Cross

(2)Diamond

(3)Point

(4)Circle

(5)Box

(6)Default

Dấu cộng Hình thoi Chấm điểm Đường tròn Hình vuông Mặc định

Unconstrained Constrained

Thay tỷ lệ cho hình đều hơn

Tỷ lệ đúng

Line Style= Kiểu vẽ đường: Title=plot title Ghi tiều đề phía

trên đồ thị Grid=[m,n] Chia lưới hình chữ

nhật cỡ mxn Numpoints=n Xác định số điểm

cho lưới

(1)Solid

(2)Dot

(3)Dash

(4)DashDot

Xít nhau Chấm điểm Gạch nối Gạch chấm

Line width= Độ dày đường Coords=

Polar Tọa độ độc cực

(2D) Carterian Tọa độ đê các

(1)Thin

(2)Medium

(3)Thick

Mỏng Trung bình Dầy

Trang 3

đường và mặt có các phương trình từ đơn giản đến phức tạp Nó sẽ giúp ích cho người sử dụng trong các bài toán khảo sát hàm số hay trong các bài toán cần

những hình vẽ minh họa

I Gói plots

Là gói chứa thông tin về các hàm vẽ hình trong không gian 2 và 3 chiều; gồm một

số hàm vẽ hình chính:spacecurve, tubeplot, plot3d, sphereplot, cylinderplot,

pointplot Chúng ta sẽ tìm hiểu kĩ hơn về các hàm trong gói tin này trong phần trình bày dưới đây

1.Biểu diễn đường trong trong không gian bằng hàm spacecurve

+Hàm spacecurve: để vẽ một đường trong không gian 3 chiều, chúng ta sẽ sử dụng một hàm spacecurve của gói plots; được biểu diễn dưới dạng:

(1)Vẽ đường trong không gian biết phương trình đường cong:

Spacecurve([phương trình đường], biến=khoảng biến, <tùy chọn>);

(2)Vẽ đường đi qua một tập hợp các điểm cho trước (tối đa 50 điểm):

Spacecurve([tập hợp tọa độ các điểm], <tùy chọn>)

Ví dụ 1: biểu diễn một đường cong với phương trình tham số là:

x=sin3tcost

y=sin3tsint

z=t

>with(plots);

>spacecurve([sin(3*t)*cos(t), sin(3*t)*sin(t),t],t=0 Pi, axes=normal, shading=z);

Ví dụ 2: biếu diễn đường qua các điểm (0,0,1); (0,1,0); (1,0,0);

>with(plots);

>spacecurve([[0,1,0],[1,0,0],[0,0,1]], axes=normal,color=green);

Trang 4

2.Ứng dụng: Cách biểu diễn đường trong không gian bằng vectơ

Ta có thể biểu diễn đường trong không gian bằng phương pháp vectơ quay, một đường cong là tập hợp đầu mút của các vectơ có hướng được xác định bởi phương trình đường cong đó, khi ta nối điểm ngọn của các vectơ ta có thể thu được một đường cong trong không gian (phương pháp này có thể hiểu là phương pháp vectơ quay)

Ví dụ: vẽ đường cong có phương trình tham số sau:

x=sin3tcost

y=sin3tsint

z=t

>restart:

>with( plots ):

>setoptions3d( thickness=3, axes=normal, scaling=constrained,

orientation=[10,60], lightmodel=light2, view=[-3 3,-3 3,-1 7] ):

>r :=t -> [sin(3*t)*cos(t), sin(3*t)*sin(t), t];

>NFrames:=20:

>FrameSeq:=NULL:

>for i from 0 to NFrames do

>rVector:=arrow(r(2*Pi*i/NFrames),color=red, width=.2):

>Curve:=spacecurve(r(t),t=0 2*Pi*i/NFrames+0.01, color=black):

>FrameSeq:=FrameSeq, display(Curve,rVector)

>end;

>display(FrameSeq,insequence=true);

Trang 5

Trong ví dụ trên, ứng với mỗi i và t=0 đến t=2pi sẽ cho ta một vectơ r tương ứng,

ta sử dụng kỹ thuật chạy các Nframe để tạo một animation tương ứng

Ưu điểm của phương pháp dùng phương pháp vector biểu diễn là cho ta một cách nhìn trực quan sinh động về cách tạo nên đường cong trong không gian, điều này

có thể dùng chương trình maple 13 để kiểm chứng

2.Biểu diễn mặt cong trong không gian

+Hàm tubeplot là hàm thuộc gói vẽ hình plots, câu lệnh cũng tương tự như

spacecurve

dùng để biểu diễn các mặt cong dạng ống

(1)Vẽ mặt cong dạng ống biết phương trình đường tâm:

tubeplot({phương trình đường tâm},biến=khoảng biến, <tùy chọn>);

(2)Vẽ mặt cong được sinh ra bởi phương trình đường khi quay xung quanh 1 trục: tubeplot({[0,t,0],radius=phương trình đường giới hạn f(t),biến=khoảng giới hạn,

<tùy chọn>);

ví dụ 1: biểu diễn mặt hình ống có phương trình đường tâm x=4sint, y=4cost, z=t

>with( plots ):

>tubeplot( [4*cos(t),4*sin(t),t], t=0 4*Pi, tubepoints=15, numpoints=70,

axes=normal, scaling=constrained );

Ví dụ 2: biếu diễn một mặt tròn xoay khi xoay đường thẳng quanh 1 trục; phương

trình đường thẳng có phương trình f(x)=–x^3+5x+1

>with(plots):

>f := x -> -x^3 + 5*x + 1:

>a := 0:

>b := 3:

tubeplot( [0,t,0], t=a b, radius=f(t), tubepoints=50, axes=normal );

Trang 6

+Hàm plot3d: dùng để vẽ một mặt cong có phương trình z=f(x,y)

plot3d( f(x,y), x=khoảng biến x , y=khoảng biến y, <tùy chọn> )

ví dụ: vẽ hàm f(x,y)=xsiny với x thuộc [-8,8], y thuộc [-π,π]

>plot3d( x*sin(y), x=-8 8, y=-Pi Pi );

+Hàm Sphereplot: dùng để biểu diễn một hình trong tọa độ cầu, cấu trúc câu lệnh Sphereplot(ρ(θ, φ), θ=khoảng biến, φ=khoảng biến, <tùy chọn> );

Trong đó ρ(θ, φ) là phương trình mặt trong toạ độ cầu phụ thuộc vào biến θ và biến φ

Ví dụ: vẽ phương trình mặt trong tọa độ cầu có phương trình ρ=sin θ+sin φ, với θ

thuộc khoảng [0,2π] và φ thuộc khoảng [0, π/3]

> with( plots ):

> sphereplot( sin(theta)+sin(phi), theta=0 2*Pi, phi=0 Pi/3, axes=normal );

Trang 7

+Hàm cylinderplot : dùng để biểu diễn mặt trong tọa độ trụ, câu lệnh:

Cylinderplot(r(θ,z), θ=khoản biến,z=khoảng biến,<tùy chọn>);

Ví dụ: biểu diễn hàm r = 6z/(9cos2θ + 4sin2θ), θ thuộc [0, 2π], z thuộc [-2,2]

> with( plots ):

> r := (theta,z) -> 6*z/sqrt(9*cos(theta)^2+4*sin(theta)^2);

> cylinderplot( r(theta,z), theta=0 2*Pi, z=-2 2, scaling=constrained, axes=boxed );

b Ứng dụng: biểu diễn giao tuyến giữa 2 mặt trong không gian

Bằng việc biểu diễn một mặt trong không gian cùng với một tính chất nào đó, hay việc biểu diễn một giao tuyến giữa 2 mặt trong không gian sẽ dễ dàng hơn với maple

Các yếu tố đầu vào gồm:

(1) Mặt z=f(x,y);

(2) Một điểm P(a,b) trong mặt phẳng xy

(3) Một vectơ đơn vị u xuất phát từ điểm P (được biểu diễn hình mũi tên trên mặt phẳng xy)

(4) Mặt phẳng (α) đi qua P vuông góc với mặt phẳng xy và song song với u

Ví dụ: vẽ mặt cong có phương trình f(x,y)= 3sinxsiny/xy, mặt phẳng (α) qua

P(1,1,0) vuông góc với mặt phẳng xy và song song với u, đường giao tuyến giữa mặt cong và mặt phẳng (α)

#khởi tạo chế độ vẽ 3d, dùng thủ tục line trong gói plottools để tránh việc biểu diễn dưới dạng mũi tên, rất khó nhìn#

> restart:

> with( plots ):

> with( plottools, line ):

Trang 8

> setoptions3d( axes=boxed, view=[-2 2,-2 2,-0.15 3],

font=[TIMES,ROMAN,24], labels=[x,y,""],

labelfont=[TIMES,BOLDITALIC,24], axesfont=[HELVETICA,18],

lightmodel=light4, scaling=constrained ):

#lựa chọn số lượng frames sử dụng, định nghĩa số gia deltatheta trên trục#

> NumFrames := 16:

> DeltaTheta := 2*Pi/NumFrames:

#biểu diễn hàm cần vẽ f(x,y), điểm P(1,1,0) bất kỳ thuộc mặt phẳng x0y, điểm (1,1,f(1,1)) thuộc d#

> f := (x,y) -> 3*sin(x)*sin(y)/(x*y);

>Surface:=plot3d(f(x,y),x=2 2,y=2 2, style=patchnogrid, shading=zhue,

orientation=[20,75] ):

> Points := pointplot3d( {[1,1,0], [1,1,f(1,1)]}, color=black, symbol=circle ):

#biểu diễn các vectơ đơn vị u(i) dưới dạng mũi tên với u(i) = (cos(i∆θ), sin(i∆θ),

0 ) với i = 0, 1, 2, ,NumFrames −1#

> u1 := i -> cos(i*DeltaTheta):

> u2 := i -> sin(i*DeltaTheta):

> u := i -> arrow( [1,1,0], <u1(i),u2(i),0>, width=.1, color=red ):

> UnitVectors := display( seq( u(i), i=0 NumFrames-1 ), insequence=true ):

#biểu diễn mặt phẳng (α) đi qua P và vuông góc vơi mp xy và song song vectơ u#

> P := i -> [1+r*u1(i), 1+r*u2(i), z]:

> VerticalPlanes := animate3d( P(i), r=-1 1, z=0 3, i=0 NumFrames-1,

frames=NumFrames, grid=[7,10], color=gray, style=wireframe ):

#Biểu diễn đường giao tuyến d của mp (α) với mặt cong#

> T := i -> [1+r*u1(i), 1+r*u2(i), f(1+r*u1(i),1+r*u2(i))]:

> Traces:= display( seq( spacecurve( T(i), r=-1 1), i=0 NumFrames-1),

color=black, thickness=2, insequence=true ):

#dùng câu lệnh display để hiển thị các yếu tố trên cùng một hình#

> display( Surface, Points, VerticalPlanes, UnitVectors, Traces);

Trang 9

II.Kỹ thuật morphing và di động hình trong không gian hai và

ba chiều:

1.Giới thiệu về gói Plottools và một số các hàm liên quan

*Gói Plottools chứa các hàm hữu ích cho việc vẽ hình Các hàm được chứa trong gói plottools gồm:

+Hàm circle: mục đích dùng để vẽ một đường tròn trong mặt phẳng với tâm có tọa

độ [c1,c2], bán kính=r

Circle([c1,c2], bán kính, tùy chọn);

Ví dụ: biểu diễn đường tròn tâm tọa độ (1,2), bán kính 3

> with( plottools ):

> with( plots ):

> display( circle( [1,2], 3, color=green ),

scaling=constrained );

+Hàm line: dùng để vẽ một đường thẳng đi qua 2 điểm trong không gian 2 và 3 chiều

line( [x1,y1], [x2,y2], tùy chọn ); #không gian 2 chiều# line( [x1,y1,z1], [x2,y2,z2], tùy chọn ); #không gian 3 chiều#

ví dụ: vẽ đường thẳng đi qua 2 điểm có tọa độ tương ứng trong không gian 2 chiều

và 3 chiều

> with( plottools ):

>L1:= line( [-1,-2], [2,3], color=magenta ):

>L2:= line( [1,-1,1], [2,3,4], color=blue, thickness=3 ):

> with( plots ):

> display(L1 );

> display( L2, axes=normal, orientation=[20,70] );

Trang 10

+Hàm polygon: dùng để biểu diễn các miền đa diện trong mặt phẳng và trong không gian bằng việc nối tọa độ các đỉnh của đa diện

polygon( [[x1,y1], [x2,y2], , [xn,yn]], tùy chọn ); #không gian 2 chiều# polygon( [[x1,y1,z1], [x2,y2,z2], , [xn,yn,zn]], tùy chọn); #không gian 3 chiều#

ví dụ1: biểu diễn một mặt phẳng được tạo bởi các điểm

> with( plottools ):

> with( plots ):

> display( polygon( [[0,0], [2,0], [1,sqrt(3)]],

color=green ), scaling=constrained );

> display( polygon( [[1,0,0], [0,1,0], [0,0,1]],

color=yellow, thickness=3 ), axes=normal );

Ví dụ 2: biểu diễn một khối đa diện (bằng việc xây dựng các mặt phẳng đa diện,

Trang 11

> P5 := [0,0,1]:

> P6 := [1,0,1]:

> P7 := [1,1,1]:

> P8 := [0,1,1]:

> P9 := [.5,.5,1.4]:

> face1 := polygon( [P1,P2,P3,P4], color=navy ):

> face2 := polygon( [P1,P2,P6,P5], color=turquoise ):

> face3 := polygon( [P2,P3,P7,P6], color=aquamarine ):

> face4 := polygon( [P3,P4,P8,P7], color=sienna ):

> face5 := polygon( [P4,P1,P5,P8], color=gray ):

> face6 := polygon( [P5,P6,P9], color=maroon ):

> face7 := polygon( [P6,P7,P9], color=tan ):

> face8 := polygon( [P7,P8,P9], color=wheat ):

> face9 := polygon( [P8,P5,P9], color=khaki ):

> display( face1, face2, face3, face4, face5, face6, face7,

face8, face9, scaling=constrained );

+Hàm rotate: là hàm sử dụng để xoay hình một góc nào đó xung quanh 1 điểm, 1 trục hoặc 1 đường:

rotate(dạng hình, góc xoay,điểm xoay );

rotate(dạng hình, α-góc quay với trục x, β-góc quay với trục y, γ-góc quay với trục z);

rotate(dạng hình, góc quay, [[x1,y1,z1],[x2,y2,z2]] );

ví dụ: xoay miền tam giác một góc Pi/8 xung quanh điểm có tọa độ (2,0)

>with( plottools ):

>with( plots ):

>T := polygon( [[0,0], [2,0], [1,sqrt(3)]], color=green ):

>display(T, scaling=constrained );

>display( rotate(T, Pi/8, [2,0]), scaling=constrained );

Trang 12

Ví dụ: xoay hình hypebolit một góc Pi/3 so với trục x, -Pi/3 so với trục y, cố định

góc trục z

> with( plots ):

> with( plottools ):

> r := (theta,z) -> 6*sqrt((z^2+1)/(9*(cos(theta))^2+4*(sin(theta))^2)):

> Hyperboloid := cylinderplot( r(theta,z), theta=0 2*Pi,

z=-2 2, axes=boxed, scaling=constrained ):

> Hyperboloid;

> rotate( Hyperboloid, Pi/3, -Pi/3, 0 );

Trang 13

+Hàm transform: hữu ích cho việc vẽ hình với phương pháp tịnh tiến hay đổi trục toạ dộ

Transform((toạ trục ban đầu)Æ(tọa độ trục sau khi thay đổi));

Ví dụ: đổi mặt từ hệ trục toạ độ (x,y) sang hệ trục toạ độ (y,x)

>with( plots ):

>with( plottools ):

>setoptions( view=[-3 3,-3 3], scaling=constrained ):

>rect:= polygon( [[0,0], [2,0], [2,1], [0,1]], color=plum ):

>Refl:= transform( (x,y)-> [y,x] ):

>display( rect );

>display( Refl(rect) );

Trang 14

2.Ứng dụng: kỹ thuật morphing và kỹ thuật di động hình

a Kỹ thuật di động hình:

Ví dụ 1: dùng hàm rotate trong di động hình, ta lần lượt xoay hình các góc là Pi/i

với i=0, ,Nframe Ta sử dụng kỹ thuật tạo hình động với Nframe thay đổi

>with(plottools):

>with(plots):

>T:=polygon([[0,0], [2,0], [1,sqrt(3)]], color =green ):

>NFrames:= 50:

>FramSeq:= NULL:

>for i from 0 to Nframes do

>FrameSeq:= FrameSeq, display( rotate(T,Pi*i/NFrames, [2,0]), scaling=

constrained);

>end;

>display(FrameSeq, insequence= true);

Trang 15

> restart:

> with( plots ):

> with( plottools ):

> setoptions3d( style=patch, axes=normal, scaling=constrained,

labels=["x","y",""], labelfont=[TIMES,BOLDITALIC,24],

axesfont=[HELVETICA,18] ):

> P1 := [0,0,0]:

> P2 := [1,0,0]:

> P3 := [1,1,0]:

> P4 := [0,1,0]:

> P5 := [0,0,1]:

> P6 := [1,0,1]:

> P7 := [1,1,1]:

> P8 := [0,1,1]:

> P9 := [.5,.5,1.4]:

> face1 := polygon( [P1,P2,P3,P4], color=navy ):

> face2 := polygon( [P1,P2,P6,P5], color=turquoise ):

> face3 := polygon( [P2,P3,P7,P6], color=aquamarine ):

> face4 := polygon( [P3,P4,P8,P7], color=sienna ):

> face5 := polygon( [P4,P1,P5,P8], color=gray ):

> face6 := polygon( [P5,P6,P9], color=maroon ):

> face7 := polygon( [P6,P7,P9], color=tan ):

> face8 := polygon( [P7,P8,P9], color=wheat ):

> face9 := polygon( [P8,P5,P9], color=khaki ):

> obelisk := display( face1, face2, face3, face4, face5,

face6, face7, face8, face9 ):

> N := 20:

> F := (x,y,z) -> (1-k/N)*<x,y,z> + k/N*(A.<x,y,z>):

> L := transform( (x,y,z) -> convert( F(x,y,z), list ) ):

> A := < <0,1,0> | <1,0,0> | <0,0,-1> >;

> Frames := seq( L(obelisk), k = 0 N ):

> display( Frames, insequence=true );

Trang 16

b.Kỹ thuật morphing

Là phép biến hình, biến đồ thị của một hàm thành đồ thị của hàm khác theo một cách thức nào đó, ta có thể coi đây là ánh xạ biến điểm bất kỳ thuộc đồ thị này thành một điểm thuộc đồ thị khác (x1(t),y1(t))Æ(x2(t),y2(t));

Ví dụ: biến đường cong có phương trình x1=2(cost)^3; y1=3(sint)^3 thành đường

có phương trình x2=3cost-cos3t; y=3sint-sin3t

> x1 := t -> 2*cos(t)^3:

> y1 := t -> 3*sin(t)^3:

> plot( [x1(t),y1(t), t=0 2*Pi], scaling=constrained ):

> x2 := t -> 3*cos(t)-cos(3*t):

> y2 := t -> 3*sin(t)-sin(3*t):

> plot( [x2(t),y2(t), t=0 2*Pi], scaling=constrained ):

> with( plots ):

> animate( [(1-k)*x1(t)+k*x2(t),(1-k)*y1(t)+k*y2(t), t=0 2*Pi], k=0 1,

scaling=constrained );

Ngày đăng: 22/05/2016, 09:02

HÌNH ẢNH LIÊN QUAN

Hình chữ nhật bao  trục tọa độ - Biểu diễn đường và mặt trong không gian kỹ thuật morphing và di động hình trong không gian hai va ba chiều
Hình ch ữ nhật bao trục tọa độ (Trang 2)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w