您好我试图让我的程序的第一部分从原点绘制一条线,长度为10,鼠标在绘图区域中单击的方向。我目前有这个:
[gx,gy,b] = ginput(1);
theta = atand(gy/gx);
theta = theta*(pi/180);
polar(theta,8,'-k')
在b~ = 3的循环内。即试图说点击鼠标左键,我希望它在点击方向上绘制一条线,当按下右键时...移动到程序的其余部分,线条保持在最后一次左键单击。
此外,当每次左键单击时,绘制的上一行应替换为新行。即一次只有一行在屏幕上。
提前感谢您的帮助。
答案 0 :(得分:0)
如果我正确地解释了您的问题,以下脚本适用于我。
figure
R=10; % desired line length
polar(0,R) % empty polar plot
b=0;
while b~=3
[gx,gy,b]=ginput(1);
if b~=3 % not a right mouse click
theta=atan(gy/gx);
if gx<0
theta=theta+pi; % this is needed, because atan(gy/gx) will always range from -pi/2 to pi/2
end
polar([0 theta],[0 R],'-k')
end
end
它的作用
使用带有R=10
的极坐标图制作一个数字。接下来,启动循环。在循环中,调用ginput()
函数。其输出存储在gx
和gy
中。接下来,检查是否按下了鼠标右键。如果不是,则使用gx
和gy
,就像使用反正切一样。如果gx<0
,反正切仍将计算-pi / 2和pi / 2之间的角度theta
,它位于极坐标图的右半部分。因此,如果是这种情况,则将pi添加到θ中。从原点[0,0]
绘制黑线,半径为10,计算角度为θ。
如果在图中任意位置单击鼠标右键,则保留while循环并继续MATLAB。请注意,gx
和gy
包含鼠标右键单击的位置,而不是之前(非右侧)鼠标单击。
这是预期的行为吗?如果没有,请告诉我,然后我可以看看我的代码是否可以改进。