2012-01-04 57 views
7

我只需要關於我所遇到的問題的某些方向,在哪裏看等等。我正在爲我的項目之一使用運動跟蹤手套,該手套會返回一個X,每個手指和手掌的Y和Z值。在Matlab/Java中將手部運動建模爲三維曲線

我想要做的是首先創建一個基於這些座標的每個手指運動的表示,然後將它們中的每一個附加到手掌的運動,以表示手。一旦我管理第一個,這第二步將很容易,但是......我不管理。

我試圖在Java中實現它(更好的分析可能性),但只能設法在所有點上同時製作3D圖形。每條曲線中有大約45,000條曲線,所以...您是否有任何想法讓它更像動畫,就像在給定時間t顯示XYZ座標點一樣?

另一個問題是:matlab實際上是這個最好的選擇嗎?我看到如何使這個動畫在Java中工作,但我從來沒有使用Java進行數據管理,我懷疑它是否真的很擅長它。是否有另一種軟件/語言擅長數據管理並對其進行動畫處理?還是應該使用Java來製作動畫,然後使用Matlab進行分析?

謝謝!

+0

Matlab在你所問的問題上做得很好。但是,您應該提供更多關於如何在matlab(圖形對象)中表示手指的細節。這很容易,但你應該提供更多的細節。 – Jorge 2012-01-05 12:58:00

+0

謝謝!我正在尋找的是具有座標軸/座標的3D空間,以及在此空間中移動的基本點,在對應於給定t的XYZ座標處。點將自動連續移動,或者通過界面進行控制(例如,移動代表整個範圍t的滾動條)。手套只記錄整個手指的一個位置,因此它們的表現非常簡單(每個手指一個點) 此外,整個3D動畫/界面控件似乎更適合於Java,但如果有辦法在Matlab中做它會很好 – 2012-01-05 14:46:44

回答

2

您可以執行以下操作。假設pos是N×3矩陣,其包含一個點的x,y,z數據,用於N個時間實例。你寫一個主要的腳本,設置變量等,並創建一個循環定時器t1,調用繪圖函數「doPlot」。主要的腳本,

clear all 
clc 

pos=rand(100,3)*10; %position matrix of random x,y,z coordinates. 100 time instances here 

ax=axes; 
set(ax,'NextPlot','replacechildren'); 
axis([0 10 0 10 0 10]); %set axis limits- fit to your needs 

Dt=0.1; %sampling period in secs 

k=1; 
hp=plot3(pos(k,1),pos(k,2),pos(k,3),'o'); %get handle to dot object 

t1=timer('TimerFcn','k=doPlot(hp,pos,t1,k)','Period', Dt,'ExecutionMode','fixedRate'); 
start(t1); 

接下來創建繪圖功能doPlot,

function k=doPlot(hp,pos,t1,k) 

k=k+1; 
if k<length(pos) 
    set(hp,'XData',pos(k,1),'YData',pos(k,2),'ZData',pos(k,3)); 
    axis([0 10 0 10 0 10]); 
else 
    stop(t1) 
end 

您將看到3D隨機空間aroung移動點(圓圈)。動畫期間是Dt秒(在這種情況下爲0.1秒)。你必須符合你的需求。這是Matlab中的一個基本動畫。你可以做更多。這取決於你的需求。