在Matlab/Java中将手部运动建模为3D曲线

Cri*_*GdM 7 java matlab curve 3d-modelling

我只需要一些关于我有问题的方向,在哪里看等等.我正在为我的一个项目使用运动跟踪手套,它为每个手指和手掌返回X,Y和Z值.

我想要做的是首先根据这些坐标创建每个手指运动的表示,然后将它们中的每一个附加到手掌的运动,以具有手的表示.一旦我管理了第一步,第二步就很容易了,但是...我不管理.

我正在尝试用Java实现它(更好的分析可能性),但是只能同时用所有点来制作3D图形.每条曲线中大约有45,000个,所以......你是否知道如何让它更像动画,就像在给定时间t在XYZ坐标处显示一个点一样?

另一个问题是:matlab实际上是最好的选择吗?我看到如何使这个动画在Java中工作,但我从来没有使用Java进行数据管理,我怀疑它是否真的很擅长......是否有其他软件/语言能够擅长数据管理并使其动画化?或者我应该只使用Java来制作动画,还是使用Matlab进行分析?

谢谢!

Jor*_*rge 2

您可以执行以下操作。设 pos 为 Nx3 矩阵,其中包含 N 次实例的点的 x、y、z 数据。您编写一个设置变量等的主脚本,并创建一个调用绘图函数“doPlot”的循环计时器 t1。主要脚本是,

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);
Run Code Online (Sandbox Code Playgroud)

接下来创建绘图函数 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
Run Code Online (Sandbox Code Playgroud)

您将看到 3D 中的一个点(圆)在空间中随机移动。动画周期为 Dt 秒(本例中为 0.1 秒)。您必须使其适合您的需求。这是Matlab 中的基本动画。你可以做更多的事情。这取决于您的需求。