MFasl12_matlab1.ir

Download Report

Transcript MFasl12_matlab1.ir

Slide 1

‫فصل دوازدهم‪:‬‬
‫نمودارهای سه‌بعدی‬

‫کالس آموزش ی‬
‫ایران متلب‬

‫‪matlab1.ir‬‬


Slide 2

‫فصل دوازدهم‪ :‬نمودارهاي سهبعدي‬
‫‪ -1-۱۱‬خمهاي فضايي‪ -‬تابع ‪plot3‬‬
‫با استفاده از تابع ‪ plot3‬در متلب ميتوان يک منحني را در فضاي سهبعدي ترسيم کرد‪.‬‬
‫روش استفاده از اين تابع بسيار شبيه تابع ‪ plot‬است‪ .‬جز اينکه بازاي هر منحني به‬
‫سه بردار هم طول نياز است‪.‬‬

‫مثال‪ :‬رسم يک فنر با شعاع برابر با يک‪:‬‬
‫‪x=t‬‬
‫‪tR‬‬

‫ایران متلب‬

‫)‪y= sin(t‬‬
‫)‪z=cos(t‬‬

‫‪matlab1.ir‬‬


Slide 3

‫ نمودارهاي سهبعدي‬:‫فصل دوازدهم‬
‫ادامه‬-‫ خمهاي فضايي‬-1-۱۱
>>t=0: pi/50:10*pi;
>>plot3(sin(t) , cos(t) , t); xlabel(‘sin(x)’); ylabel(‘cos(x)’); zlabel(‘x’)

matlab1.ir

‫ایران متلب‬


Slide 4

‫فصل دوازدهم‪ :‬نمودارهاي سهبعدي‬
‫‪-2-1۱‬تغيير زاويه ديد‬
‫با استفاده از دکمه فشاري ‪ Rotate 3D‬بر روي هر پنجره شکل متلب و يا با استفاده از‬
‫دستور ‪ view‬مي توان زاويه ديد را تغيير داد‪ .‬همچنين در منوي ‪ Tools‬با استفاده از‬
‫زيرمنوهاي ‪ Camera Motion‬مي توان در فضاي سهبعدي حرکت کرد‪.‬‬
‫شکل کلي استفاده از دستور ‪ view‬بصورت زير است‪:‬‬

‫)]‪view([az , el‬‬
‫که در اين رابطه ‪ az‬و ‪ el‬بترتيب زاويه دوربين نسبت به صفحه ‪ xy‬و بخش‬
‫منفي محور ‪ y‬است‪.‬‬

‫ایران متلب‬

‫‪matlab1.ir‬‬


Slide 5

‫فصل دوازدهم‪ :‬نمودارهاي سهبعدي‬
‫‪-3-1۱‬نمودارهاي شبکهاي‪ :‬توابع ‪mesh, meshc, meshz‬‬

‫با استفاده از اين توابع ميتوان سطوح شبکهاي(يا توري) ايجاد کرد‪.‬شکل کلي استفاده از تابع ‪mesh‬‬
‫بصورت زيراست‪:‬‬
‫)‪mesh(x,y,z‬‬
‫که در اين رابطه ‪ z‬تابعي دو متغيره از متغيرهاي ‪ x‬و ‪ y‬ميباشد‪ .‬بنابراين الزم است که ‪ z‬يک ماتريس‬
‫دو بعدي باشد که تعداد سطرهاي آن برابر با تعداد عناصر ‪ y‬و تعداد ستونهايش برابر با تعداد‬
‫عناصر ‪ x‬باشد‪ x .‬و ‪ y‬بايد بردار باشند اگرچه مي توانند ماتريسهايي همبعد نيز باشند‬
‫بدينصورت که بردار ‪ x‬به تعداد عناصر بردار ‪ y‬بصورت سطري تکرار شود و بردار ‪ y‬به تعداد‬
‫عناصر ‪ x‬بصورت ستوني تکرار گردد‪ .‬که در اينصورت دو ماتريس همبعد خواهيم داشت‪ .‬تابع‬
‫‪ meshgrid‬مي تواند اين عمل را انجام دهد‪:‬‬
‫;)‪[x_new,y_new]=meshgrid(x,y‬‬
‫تابع ‪ meshc‬عالوه بر نمودار شبکهاي‪ ،‬نمودارهاي تراز را نيز رسم ميکند‪.‬‬
‫تابع ‪ meshz‬ديوارههايي را در پايين نمودار به سمت صفحه ‪ x-y‬رسم ميکند‪.‬‬
‫ایران متلب‬

‫‪matlab1.ir‬‬


Slide 6

‫فصل دوازدهم‪ :‬نمودارهاي سهبعدي‬
‫‪-3-1۱‬نمودارهاي شبکهاي‪ -‬ادامه‪-‬‬

‫مثال ‪ : 1‬تابع ‪ peaks‬يکي از توابع متلب است که يک مدل رياض ي از پيشتعريف شده را‬
‫ايجاد ميکند‪:‬‬

‫;)‪>> [x ,y,z]= peaks(30‬‬
‫;)‪>> mesh(x,y,z‬‬

‫ایران متلب‬

‫‪matlab1.ir‬‬


Slide 7

‫ نمودارهاي سهبعدي‬:‫فصل دوازدهم‬
-‫ ادامه‬-‫نمودارهاي شبکهاي‬-3-1۱

r=sqrt(X^2 + Y^2) ‫ که‬z=sin(r)/r ‫ رسم يک تابع دو بعدي به فرمول‬: 2 ‫مثال‬
>>x=-7.5: 0.5: 7.5; y=x;
>> [x_new,y_new]=meshgrid(x,y);
>> r = sqrt(x_new.^2 + y_new.^2) + eps;
>>z=sin(r) ./ r; mesh(x_new , y_new , z) ‫يا‬: mesh(x,y,z);

matlab1.ir

‫ایران متلب‬


Slide 8

‫فصل دوازدهم‪ :‬نمودارهاي سهبعدي‬
‫‪-3-1۱‬نمودارهاي شبکهاي‪ -‬ادامه‪-‬‬
‫به صورت پیشفرض متلب نقاطی از نمودار سهبعدی که پشت نقاط‬
‫جلویی قرار گرفتهاند را مخفی میکند‪ .‬با استفاده از تابع ‪hidden‬‬
‫میتوان این رفتار را تغیير داد‪:‬‬
‫‪>>hidden off‬‬
‫‪>> hidden on‬‬
‫‪>> hidden‬‬

‫ایران متلب‬

‫‪matlab1.ir‬‬


Slide 9

‫فصل دوازدهم‪ :‬نمودارهاي سهبعدي‬
‫‪ -4-1۱‬نمودارهاي رويه‪surf :‬و ‪ surfl‬و ‪surfc‬‬
‫تفاوت نمودارهاي رويه با نمودارهاي شبکهاي آن است که در اينجا بجاي خطوط شبکهاي‪ ،‬وصلهها يا‬
‫فواصل بين شبکهها ترسيم ميگردد‪.‬‬
‫تابع ‪ surf‬دقيقا مانند تابع ‪ mesh‬بکار برده ميشود‪.‬‬
‫تابع ‪ surfl‬عالوه بر تواناييهاي تابع ‪ surf‬ميتواند خصوصيات نوردهي ش يء سهبعدي را نيز تنظيم‬
‫کند‪ .‬از قبيل جهت منبع نوري و خصوصيات انعکاس ي ش يء‬
‫تابع ‪ surfc‬مانند تابع ‪ meshc‬عمل ميکند‬

‫ایران متلب‬

‫‪matlab1.ir‬‬


Slide 10

‫فصل دوازدهم‪ :‬نمودارهاي سهبعدي‬
‫‪ -4-1۱‬نمودارهاي رويه‪-‬ادامه‬
‫تابع ‪: shading‬‬
‫با استفاده از تابع ‪ shading‬ميتوان نوع سايهرنگ نمودار را تعيين کرد‪ .‬اين تابع بايد پس از يکي از‬
‫توابع ‪ surf‬بيايد و با يکي از ُسه پارامتر زير قابل فراخواني است‪:‬‬
‫‪shading flat‬‬
‫‪shading interp‬‬
‫‪shading faceted‬‬

‫ایران متلب‬

‫‪matlab1.ir‬‬


Slide 11

‫فصل دوازدهم‪ :‬نمودارهاي سهبعدي‬
‫‪ -4-1۱‬نمودارهاي رويه‪-‬ادامه‬
‫تابع ‪: colormap‬‬
‫با استفاده از اين تابع ميتوان رنگهاي بکار برده شده براي ترسيم نمودار رويه را تعريف کرد تنها پارامتر‬
‫مورد نياز ميتواند يکي از ثابتهاي زير باشد‪:‬‬
‫‪hsv, cool , hot, prism, gray‬‬

‫ایران متلب‬

‫‪matlab1.ir‬‬


Slide 12

‫فصل دوازدهم‪ :‬نمودارهاي سهبعدي‬
‫‪ -5-11‬چرخش دوربین در فضای سه بعدی‬
‫با استفاده از تابع ‪ camorbit‬میتوان پس از رسم نمودار سهبعدی‪ ،‬زاویه دید دوربين‬
‫نسبت به ش یء را تغیير داد‪:‬‬

‫)‪camorbit(theta,phi‬‬
‫‪ :theta‬زاویه چرخش افقی‬
‫‪ :phi‬زاویه چرخش عمودی‬
‫و یا میتوانید از این فرم تابع استفاده کنید‪:‬‬

‫;)’محور چرخش’‪camorbit(theta,phi,‬‬
‫آرگومان سوم محوری است که چرخش حول آن انجام میشود را مشخص میکند که به‬
‫صورت پیشفرض محور ‪ z‬است‪.‬‬
‫ایران متلب‬

‫‪matlab1.ir‬‬


Slide 13

‫فصل دوازدهم‪ :‬نمودارهاي سهبعدي‬
‫‪ -5-11‬چرخش دوربین در فضای سه بعدی‪-‬ادامه‪...‬‬
‫مثال‪:‬‬
‫)‪surf(peaks‬‬
‫‪axis vis3d‬‬
‫‪axis off‬‬
‫‪for i=1:360‬‬
‫)'‪camorbit(2,0,'data‬‬
‫‪drawnow‬‬
‫‪end‬‬

‫ایران متلب‬

‫‪matlab1.ir‬‬


Slide 14

‫فصل دوازدهم‪ :‬نمودارهاي سهبعدي‬
‫‪ -6-11‬تعیین موقعیت دوربین‬
‫به منظور تعیين موقعیت دوربين میتوان از تابع ‪ campos‬استفاده کرد‪:‬‬
‫آرگومان ورودی این تابع موقعیت دوربين را در فضای )]‪campos([x,y,z‬‬
‫سهبعدی مشخص میکند‪.‬‬
‫مثال‪:‬‬
‫)‪surf(peaks‬‬
‫‪axis vis3d off‬‬
‫‪for x = -200:5:200‬‬
‫)]‪campos([x,5,10‬‬
‫‪drawnow‬‬
‫‪end‬‬
‫ایران متلب‬

‫‪matlab1.ir‬‬


Slide 15

‫فصل دوازدهم‪ :‬نمودارهاي سهبعدي‬
‫‪ -7-11‬نمایش میله‌رنگ‬
‫با استفاده از تابع ‪ colorbar‬میتوان پس از نمایش نمودار‪ ،‬رنگهای بکار برده شده در آن‬
‫را بصورت یک میلهرنگ در کنار نمودار نمایش داد‪:‬‬
‫)‪>> surf(peaks‬‬
‫‪>> colorbar‬‬
‫اعداد نمایش داده شده در کنار میلهرنگ مقداری را که هر رنگ به آن اشاره میکند(به‬
‫صورت پیشفرض مقدار ‪ )z‬را نمایش میدهد‪.‬‬

‫ایران متلب‬

‫‪matlab1.ir‬‬


Slide 16

‫فصل دوازدهم‪ :‬نمودارهاي سهبعدي‬
‫‪ -8-1۱‬نمودارهاي تراز‪contour , contour3-‬‬
‫نمودارهاي تراز خطوط و منحنيهاي بستهاي ميباشند که براي نمايش ارتفاعهاي‬
‫مختلف يک نمودار سهبعدي‪ ،‬در فضاي دوبعدي يا سهبعدي بکار برده ميشوند‪.‬‬
‫در اين نمودارها‪ ،‬نواحي همارتفاع توسط خطوطي به يکديگر متصل ميشوند‪.‬‬
‫نحوه استفاده از توابع ‪ contour‬و ‪ contour3‬نيز دقيقا شبيه تابع‬
‫‪ mesh‬است‪.‬‬
‫مثال‪:‬‬
‫‪[c,h] = contour(peaks); clabel(c,h), colorbar‬‬

‫ایران متلب‬

‫‪matlab1.ir‬‬


Slide 17

‫فصل دوازدهم‪ :‬نمودارهاي سهبعدي‬
‫‪ -9-11‬تابع ‪pcolor‬‬
‫این تابع دادههای مربوط به یک نمودار سهبعدی را در فضای دوبعدی رسم میکند و برای نمایش‬
‫ارتفاع(مقدار ‪ )z‬از تغیيرات رنگ استفاده مینماید‪ .‬نتیجه حاصل از این تابع ‪ ،‬مشابه تصویر از‬
‫باالی تابع ‪ surf‬است‪.‬‬

‫مثال ‪:۱‬‬
‫)‪>>pcolor(peaks‬‬

‫مثال ‪:۲‬‬
‫;))‪t=tril(ones(10‬‬
‫;])‪ts=[t,fliplr(t‬‬
‫;]‪tss=[flipud(ts);ts‬‬
‫))‪pcolor(tss); colormap(gray(2‬‬
‫ایران متلب‬

‫‪matlab1.ir‬‬


Slide 18

‫فصل دوازدهم‪ :‬نمودارهاي سهبعدي‬
‫‪ -9-11‬اجراي برنامههاي نمايش ي متلب در زمينه ترسيم سهبعدي‬
‫‪ demo‬هاي ‪ Graphics‬در متلب راهنماي بسيار خوبي براي آموزش قابليتهاي گرافيکي متلب‬
‫ميباشد‪ .‬اين برنامهها از منوي ‪ Start‬متلب در شاخه ‪ Demo-> Graphics‬در‬
‫دسترسند‪.‬‬

‫ایران متلب‬

‫‪matlab1.ir‬‬