jimin 发表于 2006-9-22 08:45

求助:matlab中如何画点和画线

我想实现一个功能,即用鼠标在图上左击一下,就能画一个点,画好点后,并能以这些点中的任意两点做为一条线段的始末点进行画线,请各位大侠指点一下,先谢谢了!!

xjzuo 发表于 2006-9-22 09:18

matlab中如何画点和画线

如果单纯是为了实现上述功能,可以直接用AutoCAD画图.

jimin 发表于 2006-9-22 09:32

原帖由 xjzuo 于 2006-9-22 09:18 发表
如果单纯是为了实现上述功能,可以直接用AutoCAD画图.
首先,谢谢你的意见
我也不是单纯用了实现上述功能,那只是一个刚开始的准备工作,并且点和线的数目不多,我想知道在matlab中是如何实现的

xjzuo 发表于 2006-9-22 09:35

matlab中如何画点和画线

哦.
一般点和线不多时,我是直接用坐标点画的.

jimin 发表于 2006-9-22 09:49

原帖由 xjzuo 于 2006-9-22 09:35 发表
哦.
一般点和线不多时,我是直接用坐标点画的.
我只是想画个示意图,直接用坐标画很不方便的,因为换几个点,几条线的话会好麻烦的,有时候也比较难确定具体的坐标是多少
呵呵,不知道我的意思表达的明白了没有

eight 发表于 2006-9-22 09:59

利用ginput函数可以画点,至于画线,是画出所有线段,还是用户任意选择两点画出一条线段?

jimin 发表于 2006-9-22 10:38

原帖由 eight 于 2006-9-22 09:59 发表
利用ginput函数可以画点,至于画线,是画出所有线段,还是用户任意选择两点画出一条线段?
谢谢eight
线是用户任意选择两点画出一条线段

eight 发表于 2006-9-22 11:32

写了一个简单的,看看是否你要的效果:(重新修改了一下)

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 编辑 ]

jimin 发表于 2006-9-22 11:40

太感谢了!!!
我先研究一下你写的程序

pyramid 发表于 2010-11-19 06:02

不错,原来matlab还有这功能

cboboc 发表于 2010-11-25 21:49

{:{03}:}
页: [1]
查看完整版本: 求助:matlab中如何画点和画线