首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >matlab/simulink中的三维鼠标输入

matlab/simulink中的三维鼠标输入
EN

Stack Overflow用户
提问于 2014-02-19 03:25:20
回答 1查看 2.3K关注 0票数 0

我想在Matlab中通过鼠标输入坐标,Matlab中没有内置通过鼠标设备输入三维坐标的功能,但是内置的函数ginput只能存储鼠标的二维坐标,在Matlab中有没有可能通过鼠标设备输入三维坐标呢?

EN

回答 1

Stack Overflow用户

发布于 2014-02-19 05:43:02

如果我理解正确的话,当绘图是3D时,您希望获得鼠标单击的坐标(在数据空间中)。也就是说,您单击绘图中的某个位置,它将返回您的当前位置。实际上,我以前已经解决过这个问题。

这项任务的主要困难--其他海报也提到了这一点--是你在2D屏幕上点击。因此,您不能在2D屏幕上唯一地指定3个独立位置。相反,在屏幕上单击可定义垂直于屏幕平面的线段,沿该线的任何3D点都同样有效。你明白为什么会这样吗?

要进行演示,请在Matlab中尝试此简短示例:

代码语言:javascript
运行
复制
surf(peaks);  %draw a sample plot
keydown = 2;
while keydown ~= 0,
   disp('Click some where on the figure');
   keydown = waitforbuttonpress;   
end
currPt = get(gca,'CurrentPoint');
disp(currPt);

您将观察到currPt是一个2x3矩阵。这定义了这条线的起点和终点。让我们现在绘制这条线:

代码语言:javascript
运行
复制
hold on;
plot3( currPt(:,1), currPt(:,2), currPt(:,3), 'k-', 'LineWidth', 2);
view(-19,46);  %rotate to view this line

所以问题是:如何定义要沿着这条线选择的点?答案取决于你首先拥有的是什么类型的数据。如果您有点数据,则准确选择其中一个顶点可能会很棘手,并且可能需要对数据进行一些后处理(例如,计算数据集中离currPt线最近的点)。如果具有面片或曲面数据(如本例),则这只是一条直线和一条平面的交点。

File Exchange上有一些工具可用于获取各种数据集的3D点。我刚刚找到的一个是:http://www.mathworks.com/matlabcentral/fileexchange/7594-click3dpoint

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21863439

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档