در مبحث انیمیشن سه بعدی در متلب ، می خواهیم خروجی های نرم افزار متلب را به صورت چرخش سه بعدی به صورت ساده نمایش دهیم. در مثال اول می خواهیم با یک کره کار ساخت انیمیشن سه بعدی در متلب را به انجام برسانیم . در واقع زاویه دید کره را در خروجی بدون تغییر ابعاد آن می چرخانیم در مثال بعدی نیز قصد داریم این کار را با یک شکل هندسی پارابولید انجام دهیم ، اما در این مثال علاوه بر چرخش زاویه دید، میخواهیم اندازه شکل خروجی را نیز به طور همزمان تغییر دهیم . این روش های ساده که در اینجا معرفی می شوند ، اساس کار انیمیشن سه بعدی در متلب هستند.
1- کار با کره
در این مثال ما می خواهیم یک کره را رسم نماییم و در گام بعدی میخواهیم زاویه دید خودمان را در جهت عمود و افقی یا همان azimuth و elevation تغییر دهیم . در واقع ما نه می خواهیم کره را بچرخانیم و نه می خواهیم ابعاد کره را تغییر دهیم بلکه می خواهیم زاویه پرسپکتیو خود را تغییر دهیم.
کدهای مربوط به این مثال :
clear; clc; close all % Draw a sphere sphere % Make the current axis box square in size axis('square') % Define title and labels for reference title('Rotation of a sphere...') xlabel('x'); ylabel('y'); zlabel('z') % Modify azimuth (horizontal rotation) and update drawing for az = -50 : .2 : 30 view(az, 40) drawnow end % Modify elevation (vertical rotation) and update drawing for el = 40 : -.2 : -30 view(30, el) drawnow end
همان طور که در کد بالا مشاهده میکنید، با استفاده از دو دستور for عمل تغییر زاویه دید را انجام دادیم . در این کد از دستور view برای این کار استفاده کردیم و در حلقه for اول با ثابت نگاه داشتن پارامتر elevation ، پارامتر azimuth را از -50 تا 30 درجه چرخاندیم و در حلقه for دوم عملیات مشابهی را برای پارامتر elevation انجام دادیم. نتیجه خروجی را قبل و بعد از چرخش (اتمام انیمیشن) در شکل های زیر به ترتیب مشاهده می کنید :
2- کار با یک پارابولید :
در مثال دوم می خواهیم با یک پارابولید کار کنیم ، در گام اول شکل را رسم میکنیم و مطمئن میشویم که ابعاد برای هدف ما که چرخش تصویر است مناسب باشد. ما تصویر را به صورت اندک اندک از طرفین میکشیم و تغییر ابعاد آن را مشاهده می نماییم . تنها با تابع set مقدار z را به روز رسانی میکنیم . در نهایت azimuth را می چرخانیم تا به نمای دیگری از شکل برسیم. حال کد های زیر را اجرا می کنیم تا با نحوه کار آن آشنا شویم :
clear; clc; close all % Define paraboloid X = -2 : .1 : 2; Y = X; [x, y] = meshgrid(X, Y); z = .5 * (x.^2 + y.^2); % Draw 3D figure, keep track of its handle h = surf(x,y,z); % Keep axes constant axis([-2 2 -2 2 0 20]) % Define title and labels for reference xlabel('x'); ylabel('y'); zlabel('z') % Stretch paraboloid and show updates for i = 1 : .1 : 5; set(h, 'xdata', x, 'ydata', y, 'zdata', i*z) drawnow end % Modify azimuth (horizontal rotation) and update drawing for az = -37.5 : .5 : 30 view(az, 30) drawnow end
با توابع meshgrid و surf در پست رسم نمودار 3 بعدی در متلب آشنا شدیم که در اینجا برای رسم شکل پارابولید از آن استفاده کردیم. در خط 10 ، ابعاد فضای خروجی را مشخص کردیم.
در حلقه for اول ، ابعاد تابع h را در سه جهت x و y و z مشخص کردیم که ابعاد در راستای z بر حسب i تغییر میکند . حلقه for دوم نیز مانند مثال قبل ، زاویه دید را می پرخاند. حال میتوانید کد های بالا را در نرم افزار متلب اجرا نموده و خروجی را مشاهده نمایید.