موضوعات وبسایت : تبلیغات
سوالات ICDL
آموزش امنیت اینستاگرام

تغییر رنگ نمودار سه بعدی در متلب

تغییر رنگ نمودار سه بعدی در متلب

نویسنده : محمد پارسایی | زمان انتشار : 12 اسفند 1399 ساعت 13:26

نرم افزار Matlab یکی از پر کاربردترین نرم افزارهایی است که در  رشته‌های مختلف از جمله مهندسی برق، مکانیک، رایانه و… کاربرد بسیاری دارد. واژه متلب از ترکیب دو واژه MATrix (ماتریس) و LABoratory (آزمایشگاه) ایجاد شده‌است.

آموزش امنیت اینستاگرام
سوالات ICDL

کار کردن با ماتریس‌ها در متلب بسیار ساده است. در حقیقت تمام داده‌ها در متلب به شکل یک ماتریس ذخیره می‌شوند.

در این قسمت ما قصد داریم تا با نحوه رسم نمودار سه بعدی در این نرم افزار آشنا شویم.

–  خمهاي فضايي- تابع plot3

با استفاده از تابع plot3 در متلب مي‌توان يک منحني را در فضاي سه‌بعدي ترسيم کرد. روش استفاده از اين تابع بسيار شبيه تابع plot است. جز اينکه بازاي هر منحني به سه بردار هم ‌طول نياز است.

مثال: رسم يک فنر با شعاع  برابر با يک:

  x=t

  y= sin(t)            t Î R

  z=cos(t)

>>t=0: pi/50:10*pi;
>>plot3(sin(t) , cos(t) , t); xlabel(‘sin(x)’); ylabel(‘cos(x)’); zlabel(‘x’)

– تغيير زاويه ديد

با استفاده از دکمه فشاري Rotate 3D بر روي هر پنجره شکل متلب و يا با استفاده از دستور view مي توان زاويه ديد را تغيير داد. همچنين در منوي Tools با استفاده از زيرمنوهاي Camera Motion مي توان در فضاي سه‌بعدي حرکت کرد.

شکل کلي استفاده از دستور view بصورت زير است:

view([az , el])

که در اين رابطه az و el بترتيب زاويه دوربين نسبت به صفحه xy و بخش منفي محور y است.

-نمودارهاي شبکه‌اي: توابع 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 رسم مي‌کند.

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

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

مثال 2 : رسم يک تابع دو بعدي به فرمول z=sin(r)/r که r=sqrt(X^2 + Y^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);

به صورت پیش‌فرض متلب نقاطی از نمودار سه‌بعدی که پشت نقاط جلویی قرار گرفته‌اند را مخفی می‌کند. با استفاده از تابع hidden می‌توان این رفتار را تغییر داد:

>>hidden off
>> hidden on
>> hidden

– نمودارهاي رويه: surfو surfl و surfc

تفاوت نمودارهاي رويه با نمودارهاي شبکه‌اي آن است که در اينجا بجاي خطوط شبکه‌اي، وصله‌ها يا فواصل بين شبکه‌ها ترسيم مي‌گردد.

تابع surf دقيقا مانند تابع mesh بکار برده مي‌شود.

تابع surfl علاوه بر تواناييهاي تابع surf مي‌تواند خصوصيات نوردهي شيء سه‌بعدي را نيز تنظيم کند. از قبيل جهت منبع نوري و خصوصيات انعکاسي شيء

تابع surfc مانند تابع meshc عمل مي‌کند

تابع shading :

با استفاده از تابع shading مي‌توان نوع سايه‌‌رنگ نمودار را تعيين کرد. اين تابع بايد پس از يکي از توابع surf بيايد و با يکي از سُه پارامتر زير قابل فراخواني است:

shading flat

shading interp

shading faceted

تابع colormap :

با استفاده از اين تابع مي‌توان رنگهاي بکار برده شده براي ترسيم نمودار رويه را تعريف کرد تنها پارامتر مورد نياز مي‌تواند يکي از ثابتهاي زير باشد:

hsv, cool , hot, prism, gray

چرخش دوربین در فضای سه بعدی

با استفاده از تابع camorbit می‌توان پس از رسم نمودار سه‌بعدی، زاویه دید دوربین نسبت به شیء را تغییر داد:

camorbit(theta,phi)

theta: زاویه چرخش افقی

phi: زاویه چرخش عمودی

و یا می‌توانید از این فرم تابع استفاده کنید:

camorbit(theta,phi,’محور چرخش’);

آرگومان سوم محوری است که چرخش حول آن انجام می‌شود را مشخص می‌کند که به صورت پیش‌فرض محور z‌ است.

مثال:

surf(peaks)
axis vis3d
axis off
for i=1:360
    camorbit(2,0,'data')
    drawnow
end

– تعیین موقعیت دوربین

به منظور تعیین موقعیت دوربین می‌توان از تابع campos استفاده کرد:

campos([x,y,z]) آرگومان ورودی این تابع موقعیت دوربین را در فضای سه‌بعدی مشخص می‌کند.

مثال:

surf(peaks)
axis vis3d off
for x = -200:5:200
    campos([x,5,10])
    drawnow
end

– نمایش میله‌رنگ

با استفاده از تابع colorbar می‌توان پس از نمایش نمودار، رنگهای بکار برده شده در آن را بصورت یک میله‌رنگ در کنار نمودار نمایش داد:

>> surf(peaks)
>> colorbar

اعداد نمایش داده شده در کنار میله‌رنگ مقداری را که هر رنگ به آن اشاره می‌کند(به صورت پیش‌فرض مقدار z) را نمایش می‌دهد.

– نمودارهاي تراز-contour , contour3

نمودارهاي تراز خطوط و منحني‌هاي بسته‌اي مي‌باشند که براي نمايش ارتفاع‌هاي مختلف يک نمودار سه‌بعدي، در فضاي دوبعدي يا سه‌بعدي بکار برده مي‌شوند. در اين نمودارها، نواحي هم‌ارتفاع توسط خطوطي به يکديگر متصل مي‌شوند.

نحوه استفاده از توابع contour و contour3 نيز دقيقا شبيه تابع mesh است.

مثال:

[c,h] = contour(peaks); clabel(c,h), colorbar

– تابع pcolor

این تابع داده‌های مربوط به یک نمودار سه‌بعدی را در فضای دو‌بعدی رسم می‌کند و برای نمایش ارتفاع(مقدار z) از تغییرات رنگ استفاده می‌نماید. نتیجه حاصل از این تابع ، مشابه تصویر از بالای تابع surf‌ است.

مثال ۱:

>>pcolor(peaks)

مثال ۲:

t=tril(ones(10));
ts=[t,fliplr(t)];
tss=[flipud(ts);ts];
pcolor(tss); colormap(gray(2))

– اجراي برنامه‌هاي نمايشي متلب در زمينه ترسيم سه‌بعدي

demo هاي Graphics در متلب راهنماي بسيار خوبي براي آموزش قابليتهاي گرافيکي متلب مي‌باشد. اين برنامه‌ها از منوي Start متلب در شاخه Demo-> Graphics در دسترسند.

آیا این مطلب برای شما مفید بود؟


منبع: sabzdanesh.com



ارسال نظر

نام


ایمیل


نظر