Matlab数据游标模式实现三维坐标的实时获取与存储 datacursormode

主函数负责生成数据图,并且设置datacursormode的回调函数。

实现主要在callback函数里实现,能够实现鼠标单击获取坐标图中的数据。

可进一步开发用于实现三维点、点云标注。

function main
hFigure= figure;

t=0:0.01:2.2;
z=104.7*(1-exp(-11*t/30))-26*t;
x=33*(1-exp(-11*t/30))*cosd(27);
y=33*(1-exp(-11*t/30))*sind(27);
scatter3(x,y,z,10,z,'filled')

global labeled_x labeled_y labeled_z;
labeled_x=[];
labeled_y=[];
labeled_z=[];

datacursormode on
hCursor= datacursormode(hFigure);
set(hCursor,'UpdateFcn',@callBack);

while(1)
   command=input('Pleanse enter Label or E/e to Exit.\n','s');
  if command == 'e' || 'E'
      close all;
      break
  end
end

function txt = callBack(~,event_obj)
pos = get(event_obj,'Position'); %得到datacursor的值
x=pos(1);
y=pos(2);
z=pos(3);
txt = ['(' num2str(x) ', ' num2str(y) ',' num2str(z) ')'];

global labeled_x labeled_y labeled_z;
labeled_x=[labeled_x,x];
labeled_y=[labeled_y,y];
labeled_z=[labeled_z,z];
for i = 1:length(labeled_x)
    disp([num2str(labeled_x(i)),',',num2str(labeled_y(i)),',',num2str(labeled_z(i))])
end

disp(['current point:',txt]);

结果如下所示,图中结果需要按着shift单击,否则图上的txt框只显示一个。

 

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值