2012-01-04 46 views
7

Tôi chỉ cần một số hướng dẫn về vấn đề tôi có, nơi để xem, v.v .. Tôi đang sử dụng găng tay theo dõi chuyển động cho một trong các dự án của tôi. Giá trị Y và Z cho mỗi ngón tay và cho lòng bàn tay.Chuyển động mô hình tay dưới dạng đường cong 3D trong Matlab/Java

Điều tôi muốn làm trước tiên là tạo ra một biểu diễn của mỗi chuyển động ngón tay dựa trên các tọa độ này, và sau đó đính kèm mỗi ngón tay vào chuyển động của lòng bàn tay, để có một đại diện của bàn tay. Bước thứ hai này sẽ dễ dàng một khi tôi quản lý cái đầu tiên, nhưng ... tôi không quản lý.

Tôi đang cố gắng thực hiện nó bằng Java (khả năng phân tích tốt hơn), nhưng chỉ có thể quản lý để tạo biểu đồ 3D với TẤT CẢ các điểm, cùng một lúc. Và có khoảng 45.000 trong số chúng trong mỗi đường cong, vì vậy ... Bạn có ý tưởng làm thế nào để làm cho nó giống như một hình ảnh động, như trong việc hiển thị một điểm tại tọa độ XYZ của nó tại một thời gian nhất định t?

Câu hỏi khác là: MATLAB có thực sự là lựa chọn tốt nhất cho việc này không? Tôi thấy cách làm cho hoạt ảnh này hoạt động trong Java, nhưng tôi chưa bao giờ sử dụng Java để quản lý dữ liệu, và tôi nghi ngờ nó thực sự tốt ở đó .. Có một phần mềm/ngôn ngữ nào khác có thể quản lý dữ liệu VÀ làm động nó không? Hay tôi chỉ nên sử dụng Java để tạo hoạt ảnh và Matlab để thực hiện phân tích?

Cảm ơn!

+0

Matlab thực hiện công việc khá tốt theo những gì bạn yêu cầu. Tuy nhiên, bạn nên cung cấp thêm chi tiết về cách bạn đại diện cho ngón tay trong MATLAB (đối tượng đồ họa). Nó là khá dễ dàng nhưng bạn nên cung cấp chi tiết hơn. – Jorge

+0

Cảm ơn! Những gì tôi đang tìm kiếm là để có một không gian 3D với trục/tọa độ, và một dấu chấm cơ bản di chuyển trong không gian này, tại tọa độ XYZ tương ứng với một t nhất định. Dấu chấm sẽ tự di chuyển liên tục, hoặc sẽ được điều khiển thông qua giao diện (ví dụ di chuyển thanh cuộn biểu diễn toàn bộ phạm vi của t). Găng tay chỉ ghi một vị trí cho toàn bộ ngón tay, vì vậy biểu diễn của chúng khá đơn giản (một dấu chấm trên mỗi ngón tay) Một lần nữa, toàn bộ hoạt hình 3D/điều khiển giao diện này dường như thích hợp hơn cho Java, nhưng nếu có cách làm điều đó trong Matlab nó sẽ là tuyệt vời –

Trả lời

2

Bạn có thể làm như sau. Giả sử pos là ma trận Nx3 chứa dữ liệu x, y, z của một điểm, trong trường hợp N thời gian. Bạn viết một kịch bản chính để thiết lập các vars vv và tạo một bộ đếm thời gian vòng lặp t1 gọi hàm vẽ "doPlot". Các kịch bản chính là,

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

Tiếp theo, bạn tạo ra các chức năng âm mưu 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 

Bạn sẽ thấy một điểm (khoanh tròn) trong không gian 3D di chuyển ngẫu nhiên aroung trong không gian. Thời gian hoạt ảnh là Dt giây (0,1 giây trong trường hợp này). Bạn phải phù hợp với nhu cầu của bạn. Đây là một hình ảnh động cơ bản trong Matlab. Bạn có thể làm nhiều hơn nữa. Nó phụ thuộc vào nhu cầu của bạn.

Các vấn đề liên quan