求助:matlab中如何画点和画线
我想实现一个功能,即用鼠标在图上左击一下,就能画一个点,画好点后,并能以这些点中的任意两点做为一条线段的始末点进行画线,请各位大侠指点一下,先谢谢了!!matlab中如何画点和画线
如果单纯是为了实现上述功能,可以直接用AutoCAD画图. 原帖由 xjzuo 于 2006-9-22 09:18 发表如果单纯是为了实现上述功能,可以直接用AutoCAD画图.
首先,谢谢你的意见
我也不是单纯用了实现上述功能,那只是一个刚开始的准备工作,并且点和线的数目不多,我想知道在matlab中是如何实现的
matlab中如何画点和画线
哦.一般点和线不多时,我是直接用坐标点画的. 原帖由 xjzuo 于 2006-9-22 09:35 发表
哦.
一般点和线不多时,我是直接用坐标点画的.
我只是想画个示意图,直接用坐标画很不方便的,因为换几个点,几条线的话会好麻烦的,有时候也比较难确定具体的坐标是多少
呵呵,不知道我的意思表达的明白了没有 利用ginput函数可以画点,至于画线,是画出所有线段,还是用户任意选择两点画出一条线段? 原帖由 eight 于 2006-9-22 09:59 发表
利用ginput函数可以画点,至于画线,是画出所有线段,还是用户任意选择两点画出一条线段?
谢谢eight
线是用户任意选择两点画出一条线段 写了一个简单的,看看是否你要的效果:(重新修改了一下)
h = figure; axis(); hold on
button = 1; n = 0; xy_org = [];
while button == 1% 输入数据点,以右键作结
= ginput(1);plot(xi, yi, 'r+');
n = n + 1; xy_org(:,n) = ;
end
pause;% 输入完毕后按任意键继续
button = 1; m = 0; s = zeros(1,2); pre_m = 0;
while button == 1 % 选择数据点,以右键作结
while button == 1 && m < 2
= ginput(1);
= min(sum((repmat(,1,n) - xy_org).^2)); % 求各数据点与当前鼠标点的最小距离
if d <= 0.1
if pre_m ~= 0 % 之前画过直线,要刷新一下屏幕
plot(xy_org(1,s(:)), xy_org(2,s(:)), 'wo');
plot(xy_org(1,s(:)), xy_org(2,s(:)), 'w');
plot(xy_org(1,s(:)), xy_org(2,s(:)), 'r+');
pre_m = 0;
end
plot(xy_org(1,ind), xy_org(2,ind), 'bo');
m = m + 1; s(m) = ind;
end
end
if m == 1
plot(xy_org(1,s(m)), xy_org(2,s(m)), 'wo');
plot(xy_org(1,s(m)), xy_org(2,s(m)), 'r+');
elseif m == 2
plot(xy_org(1,s(:)),xy_org(2,s(:)), 'g');
end
pre_m = m; m = 0;
end
hold off;
[ 本帖最后由 eight 于 2006-9-22 14:29 编辑 ] 太感谢了!!!
我先研究一下你写的程序 不错,原来matlab还有这功能 {:{03}:}
页:
[1]