查看: 122|回复: 4|关注: 0

[已答复] 多连通区域内填充线段的实现(孔洞不填充)

[复制链接]

新手

10 麦片

财富积分


050


2

主题

11

帖子

0

最佳答案
发表于 2020-5-22 16:59:36 | 显示全部楼层 |阅读模式
刚接触matlab,最近在向左一个多连通区域填充线段的实现,不过还是没能跳过那个孔洞,不知道论坛前辈有什么建议呢 不填充.PNG
  1. clc,clear;
  2. f = @(m,k,x) m+k*x
  3. m=-20:0.2:20;
  4. k=0.3; % Slope
  5. x=0:0.1:100;
  6. L=cell(length(m),1);
  7. for i=1:length(m)
  8.     L{i}=f(m(i),k,x);
  9. end

  10. % Define polygon
  11. ins = [1 4 4 1 1 NaN 2 2 3 3 2 NaN;1 1 4 4 1 NaN 2 3 3 2 2 NaN];
  12. xp{1} = [ins(1,:) ins(1,1)];
  13. yp{1} = [ins(2,:) ins(2,1)];

  14. % Plot
  15. ax = axes
  16. hold on
  17. ax.XLim=[0 5];
  18. ax.YLim=[0 5];

  19. % Draw polygon
  20. cellfun(@(X,Y) plot(X,Y,'k'),xp,yp)

  21. % Find points inside and draw those line segments
  22. for i=1:length(xp)
  23.   in = cellfun(@(y)inpolygon(x,y,xp{i},yp{i}),L,'uniformoutput',false);
  24.   cellfun(@(Y,IN) plot(x(IN==true),Y(IN==true),'r'),L,in)
  25. end
复制代码
不填充.PNG
回复主题 已获打赏: 0 积分

举报

新手

10 麦片

财富积分


050


2

主题

11

帖子

0

最佳答案
 楼主| 发表于 2020-5-22 21:46:00 | 显示全部楼层
:'(没有人吗 ···matlab太多功能了
回复此楼 已获打赏: 0 积分

举报

MATLAB 基础讨论
版块优秀回答者

入门

277 麦片

财富积分


50500


15

主题

299

帖子

33

最佳答案
  • 关注者: 4
发表于 2020-5-23 10:40:58 | 显示全部楼层
修改下这句。
  1. cellfun(@(Y,IN) plot(x(IN==true),Y(IN==true),'r+'),L,in)
复制代码


demo.png
回复此楼 已获打赏: 0 积分

举报

新手

10 麦片

财富积分


050


2

主题

11

帖子

0

最佳答案
 楼主| 发表于 2020-5-24 12:36:03 | 显示全部楼层

感谢您的答复,不过看了下这个应该是标记出连通区域内的点, 其实我是想用线段进行填充。不知道有啥更好的建议呢
回复此楼 已获打赏: 0 积分

举报

MATLAB 基础讨论
版块优秀回答者

入门

277 麦片

财富积分


50500


15

主题

299

帖子

33

最佳答案
  • 关注者: 4
发表于 2020-5-24 14:23:55 | 显示全部楼层
可以把里边的方框,单独画一下,用fill做白色填充。
回复此楼 已获打赏: 0 积分

举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

快速回复 返回顶部 返回列表