日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 人工智能 > 循环神经网络 >内容正文

循环神经网络

matlab怎让3d旋转,如何在MATLAB中平滑旋转3D绘图?

發(fā)布時(shí)間:2023/11/30 循环神经网络 75 豆豆
生活随笔 收集整理的這篇文章主要介紹了 matlab怎让3d旋转,如何在MATLAB中平滑旋转3D绘图? 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

我會(huì)說(shuō)這是你正在繪制的大量積分導(dǎo)致經(jīng)濟(jì)放緩.一個(gè)選項(xiàng)是縮減采樣..也可以使用較低級(jí)別的功能進(jìn)行繪制(檢查

this related post以獲得plot3 / scatter3 / line性能的比較).

考慮以下針對(duì)速度優(yōu)化的動(dòng)畫(huà):

[X Y Z] = sphere(64);

X = X(:); Y = Y(:); Z = Z(:);

%# set-up figure

hFig = figure('Backingstore','off', 'renderer','zbuffer');

%# use lower-level function LINE

line(0.50*[X,X], 0.50*[Y,Y], 0.50*[Z,Z], 'LineStyle','none', 'Marker','.', 'MarkerSize',1, 'Color','r')

line(0.75*[X,X], 0.75*[Y,Y], 0.75*[Z,Z], 'LineStyle','none', 'Marker','.', 'MarkerSize',1, 'Color','g')

line(1.00*[X,X], 1.00*[Y,Y], 1.00*[Z,Z], 'LineStyle','none', 'Marker','.', 'MarkerSize',1, 'Color','b')

view(3)

%# freeze the aspect ratio to override stretch-to-fill behaviour

axis vis3d

%# fix the axes limits manually

%#set(gca, 'xlim',[-1 1], 'ylim',[-1 1], 'zlim',[-1 1])

axis manual

%# maybe even remove the tick labels

%set(gca, 'xticklabel',[], 'yticklabel',[], 'zticklabel',[])

%# animate (until figure is closed)

while ishandle(hFig); camorbit(0.9,-0.1); drawnow; end

編輯:

如果我理解正確,你要做的是錄制一個(gè)截屏視頻(使用第三方應(yīng)用),同時(shí)手動(dòng)旋轉(zhuǎn)圖形,但在你的情況下,這些手動(dòng)旋轉(zhuǎn)是“跳躍”.另一方面,在一個(gè)while循環(huán)中使用CAMORBIT / VIEW動(dòng)畫(huà)你的數(shù)字運(yùn)行順暢……

我提出了另一種解決方案:首先使用鼠標(biāo)旋轉(zhuǎn)圖形,然后在每個(gè)步驟(方位角,仰角)上寫(xiě)下這些視圖配置.然后,您可以在錄制視頻時(shí)使用VIEW功能重播它們,例如:

v = [...]; %# matrix where each row specify Az/El of view

for i=1:size(v,1)

view( v(i,:) )

drawnow

end

缺點(diǎn)是您必須以小步驟使用鼠標(biāo)按下/旋轉(zhuǎn)/釋放(ROTATE3D對(duì)象不會(huì)暴露鼠標(biāo)移動(dòng)事件)

我寫(xiě)了一個(gè)簡(jiǎn)單的函數(shù)來(lái)幫助你完成這個(gè)過(guò)程.它加載保存的圖形,啟用3d旋轉(zhuǎn),并跟蹤每一步的中間位置.完成后,按“完成”按鈕返回視圖列表…

function v = rotationDemo(figFileName)

views = []; %# list of views (Az,El)

hFig = hgload(figFileName); %# load the saved figure

views(1,:) = get(gca,'View'); %# store initial view

%# add a button, used to terminate the process

hButton = uicontrol('Style','pushbutton', 'Position',[400 1 80 20], ...

'String','Done?', 'Callback',@buttonCallback);

set(hFig, 'Toolbar','figure') %# restore toolbar

%# start 3d rotation, and handle post-callback to record intermediate views

h = rotate3d(hFig); %# get rotation object

set(h, 'ActionPostCallback',@rotateCallback)

set(h, 'Enable','on') %# enable rotation

msgbox('Rotate the view step-by-step', 'rotate3d', 'warn', 'modal')

uiwait(hFig) %# wait for user to click button

delete(hButton) %# delete button on finish

set(h, 'Enable','off') %# disable rotation

v = round(views); %# return the list of views

%# callback functions

function rotateCallback(o,e)

views(end+1,:) = get(e.Axes,'View'); %# add current view to list

end

function buttonCallback(o,e)

uiresume(gcbf) %# uiresume(hFig)

end

end

你可以調(diào)用上面的函數(shù),然后重放動(dòng)畫(huà):

v = rotationDemo('smooth_rotation.fig');

for i=1:size(v,1)

view(v(i,:))

drawnow

end

我們可以通過(guò)簡(jiǎn)單的插值來(lái)平滑過(guò)渡:

v = rotationDemo('smooth_rotation.fig');

n = size(v,1);

nn = linspace(1,n,100)'; %'# use 100 steps

vv = round( [interp1(v(:,1),nn) interp1(v(:,2),nn)] );

for i=1:size(vv,1)

view(vv(i,:))

DRAWNOW %# or PAUSE(..) to slow it down

end

作為旁注,我應(yīng)該提到ROTATE3D和CAMORBIT有不同的效果. ROTATE3D更改當(dāng)前軸的View屬性,而CAMORBIT控制當(dāng)前軸的CameraTarget / CameraPosition / CameraUpVector的相機(jī)屬性.

總結(jié)

以上是生活随笔為你收集整理的matlab怎让3d旋转,如何在MATLAB中平滑旋转3D绘图?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。