Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
matlab/simulink中的三维鼠标输入_Matlab_Input_Mouse_Coordinates_Simulink - Fatal编程技术网

matlab/simulink中的三维鼠标输入

matlab/simulink中的三维鼠标输入,matlab,input,mouse,coordinates,simulink,Matlab,Input,Mouse,Coordinates,Simulink,我想在Matlab或Simulink中通过鼠标输入坐标,Matlab中没有通过鼠标设备输入三维坐标的内置工具,但是内置函数ginput只能存储鼠标的二维坐标,Matlab/Simulink中是否有可能通过鼠标设备输入三维坐标 如果我理解正确,您希望在绘图为3D时获得鼠标单击的坐标(在数据空间中)。也就是说,单击绘图中的某个位置,它将返回当前位置。事实上,我以前已经解决过这个问题 这项任务的主要困难——其他海报也提到了这一点——在于你点击的是2D屏幕。因此,不能在二维屏幕上唯一指定3个独立位置。相

我想在Matlab或Simulink中通过鼠标输入坐标,Matlab中没有通过鼠标设备输入三维坐标的内置工具,但是内置函数
ginput
只能存储鼠标的二维坐标,Matlab/Simulink中是否有可能通过鼠标设备输入三维坐标

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

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

为了演示,请在Matlab中尝试以下简短示例:

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矩阵。这定义了这条线的起点和终点。现在让我们绘制这条线:

hold on;
plot3( currPt(:,1), currPt(:,2), currPt(:,3), 'k-', 'LineWidth', 2);
view(-19,46);  %rotate to view this line
所以问题是:如何定义沿着这条线要选择的点?答案取决于你首先掌握的数据类型。如果有点数据,精确选择一个顶点可能会很棘手,并且可能需要对数据进行一些后处理(例如,计算数据集中距离currPt线最近的点)。如果有面片或曲面数据(如本例),则这只是直线和平面的交点


文件交换中有一些工具可以为各种数据集获取3D点。我刚刚发现的一个问题是:

2D屏幕上的3D坐标?至少可以说这不是很直观,是吗?显然,3D屏幕中的3D坐标。什么是3D屏幕?简单的3D X Y Z坐标图。这是一个公共论坛。如果您有问题,请在此处发布,以便其他人可以从您的发现中受益。使用电子邮件违背了本论坛的观点。到目前为止,你具体尝试了什么?你被困在哪里?我愿意帮助你;我只需要a)它通过这个论坛,b)你展示你自己的一些努力。但如果你不需要帮助,那是你的特权。