2012-01-09 52 views
5

我目前正在研究移動手指的3D表示。您可以在下面的圖片中看到它的樣子,因爲它太複雜,否則來形容:在Matlab中向3D繪圖數據點添加字母

hand representation http://img51.imageshack.us/img51/4747/handexample.png

這是一個動畫,所以它要不停地移動。每個手指有一個點,手掌有一個點。但是,我無法跟蹤手指。我試圖給他們不同的顏色,但它沒有什麼幫助。

所以,問題是:

  • 有沒有辦法來代替圈,或任何其他標誌,與實際的字母,甚至短字(3-4字母)?

  • 或者(這是相當長的一段時間,但爲什麼不問?),有沒有辦法將這些點連接起來?這是可選的,如有必要,我可能會提出另一個問題。

謝謝!

這裏是實際的代碼;我知道這是遠遠優雅編碼和我對此很抱歉,但它的作品,這已經是對我來說是很大的一步:

clear all 
clc 

csv=csvread('pilot6/maindroite.csv',1,0); %read the values from a csv 
both = csv(:,2:19); 

ax=axes; 
set(ax,'NextPlot','replacechildren'); 

Dt=0.1; %sampling period in secs 

k=1; 
hp1=plot3(both(k,1),both(k,2),both(k,3),'ok'); %get handle to dot object 
hold on; 
hp2=plot3(both(k,4),both(k,5),both(k,6),'og'); 
hp3=plot3(both(k,7),both(k,8),both(k,9),'ob'); 
hp4=plot3(both(k,10),both(k,11),both(k,12),'oc'); 
hp5=plot3(both(k,13),both(k,14),both(k,15),'om'); 
hp6=plot3(both(k,16),both(k,17),both(k,18),'or'); 
hold off; 

t1=timer('TimerFcn','k=doPlot(hp1,hp2,hp3,hp4,hp5,hp6,both,t1,k)','Period', Dt,'ExecutionMode','fixedRate'); 
start(t1); 

和功能使用:

function k=doPlot(hp1,hp2,hp3,hp4,hp5,hp6,pos,t1,k) 

k=k+1; 
if k<5000%length(pos) 
    set(hp1,'XData',pos(k,1),'YData',pos(k,2),'ZData',pos(k,3)); 
    axis([0 255 0 255 0 255]); 
    set(hp2,'XData',pos(k,4),'YData',pos(k,5),'ZData',pos(k,6)); 
    set(hp3,'XData',pos(k,7),'YData',pos(k,8),'ZData',pos(k,9)); 
    set(hp4,'XData',pos(k,10),'YData',pos(k,11),'ZData',pos(k,12)); 
    set(hp5,'XData',pos(k,13),'YData',pos(k,14),'ZData',pos(k,15)); 
    set(hp6,'XData',pos(k,16),'YData',pos(k,17),'ZData',pos(k,18)); 

else 
    k=1; 
    set(hp,'XData',pos(k,1),'YData',pos(k,2),'ZData',pos(k,3)); 
    axis([0 255 0 255 0 255]); 
end 

我只是要提到這一點在很大程度上基於Jorge's answer on this question,所以再次感謝他

回答

6
  1. text(x,y,z,'string')代替plot3應該改變點工作到文本,其中[x,y,z]是您繪製的每個點的座標。
    注:調用set需要改變從set(hp3,'XData',x,'YData',y,'ZData',z)set(htext,'pos',[x,y,z])。其中hp3plot3-handle對象的句柄,而htext是對象text-handle的句柄。

  2. 要連接點與線使用plot3(X,Y,Z)其中X=[x_1,x_2,...,x_n],Y=[y_1,y_2,...,y_n]Z=[z_1,z_2,...,z_n]

+0

謝謝!可以肯定的是,$符號是否表明您正在製作的報價?此外,我正在使用一個* set('X',1,'Y',2,'Z',3)*在某個點,它不斷返回*文本屬性的錯誤值:'XLimInclude'*。我嘗試將XLimInclude設置爲'on'和'off',結果相同,您是否知道它來自哪裏?我會將我的代碼添加到問題中,以便您可以看到問題的出現位置。 – 2012-01-09 18:58:49

+0

@Mikalichov是$是格式(即LaTeX格式的數學)。我改變了格式。至於'set'函數,或許在'set'的調用中將''X''改爲''XData'',對'Y'和'Z'類似。不知道還有什麼建議。 – Azim 2012-01-09 19:07:40

+0

嗯,我首先嚐試了'XData'等,但得到了返回a *「在'text'類中沒有'XData'屬性。」*錯誤,因此使用'X'等。無論如何,我會繼續在文本軌道上進行嘗試,謝謝! – 2012-01-09 19:24:29