2012-01-04 10 views
7

Solo necesito algunas indicaciones con respecto a un problema que tengo, dónde mirar, etc. Estoy usando un guante de movimiento para uno de mis proyectos, que devuelve una X, Los valores Y y Z para cada dedo y para la palma.Modelando el movimiento de la mano como una curva 3D en Matlab/Java

Lo que me gustaría hacer es crear primero una representación de cada movimiento del dedo basado en estas coordenadas, y luego unir cada una de ellas al movimiento de la palma, para tener una representación de la mano. Este segundo paso será fácil una vez que administre el primero, pero ... no lo logro.

Estoy tratando de implementarlo en Java (mejores posibilidades de análisis), pero solo puedo hacer un gráfico 3D con TODOS los puntos, al mismo tiempo. Y hay alrededor de 45,000 de ellos en cada curva, entonces ... ¿Tendría alguna idea de cómo hacerlo más como una animación, como mostrar un punto en sus coordenadas XYZ en un momento dado t?

La otra pregunta es: ¿es matlab realmente la mejor opción para esto? Veo cómo hacer que esta animación funcione en Java, pero nunca utilicé Java para la gestión de datos, y dudo que sea realmente buena. ¿Hay otro software/lenguaje que sea bueno para la administración de datos Y para animarlo? ¿O debería usar Java para hacer la animación y Matlab para hacer el análisis?

Gracias!

+0

Matlab hace un muy buen trabajo en lo que pides. Sin embargo, debe proporcionar más detalles sobre cómo representa el dedo en matlab (objeto gráfico). Es bastante fácil, pero debería proporcionar más detalles. – Jorge

+0

Gracias! Lo que estoy buscando es tener un espacio tridimensional con ejes/coordenadas, y un punto básico moviéndose en este espacio, en las coordenadas XYZ correspondientes a una t dada. El punto se moverá solo o continuamente, o se controlará a través de la interfaz (por ejemplo, moviendo una barra de desplazamiento que representa todo el rango de t). El guante registra solo una posición para todo el dedo, por lo que su representación es bastante simple (un punto por dedo) De nuevo, todo este control de animación/interfaz 3D parece mucho más apropiado para Java, pero si hay una forma de hacerlo en Matlab sería genial –

Respuesta

2

Puede hacer lo siguiente. Deje que pos sea una matriz Nx3 que contenga los datos x, y, z de un punto, para N instancias temporales. Usted escribe una secuencia de comandos principal que configura vars, etc. y crea un temporizador de ciclo t1 que llama a la función de trazado "doPlot". El script principal es,

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); 

A continuación se crea el dibujo de las funciones 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 

Usted verá un punto (círculo) en 3D en movimiento al azar aroung en el espacio. El período de animación es Dt secs (0.1 segundos en este caso). Debe ajustarlo a sus necesidades. Esta es una animación básica en Matlab. Podrías hacer mucho más. Depende de tus necesidades.

Cuestiones relacionadas