7

我只需要一些关于我遇到的问题、去哪里等的指示。我正在为我的一个项目使用运动跟踪手套,它为每个手指和手掌返回 X、Y 和 Z 值。

我想做的是首先根据这些坐标创建每个手指运动的表示,然后将它们中的每一个附加到手掌的运动上,以获得手的表示。一旦我完成了第一步,第二步就很容易了,但是……我做不到。

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

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

谢谢!

4

1 回答 1

2

您可以执行以下操作。令 pos 是一个 Nx3 矩阵,它包含一个点的 x,y,z 数据,用于 N 个时间实例。您编写了一个设置 vars 等的主脚本,并创建了一个循环计时器 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 中的一个点(圆)在空间中随机移动。动画周期为 Dt 秒(在本例中为 0.1 秒)。你必须让它适合你的需要。这是 Matlab 中的一个基本动画。你可以做得更多。这取决于您的需求。

于 2012-01-05T19:36:00.483 回答