Set value for elements within a polygon
4 次查看(过去 30 天)
显示 更早的评论
Hi all,
I am new to Matlab and trying to solve a problem with polygon.
I want to create a random 2-D matrix, let's say 100 by 100 as a domain.
domain=ones(100);
Then by enter the x & y coordinates of the polygon, I would like to draw that polygon and set all the elements inside the polygon to a different value.
xv=[40;50;60;50;40];
yv=[60;50;60;70;60];
plot(xv,yv) %plot the polygon
in=inpolygoon(xq,yq,xv,xv);
domain(in)=2;
I am stuck right here, I dont know how to define xq and yq to complete the inpolygon syntax. Please help :(.
Thank you all.
0 个评论
采纳的回答
更多回答(1 个)
Sean de Wolski
2021-8-7
Something along this line will work too. Note, you may need to deal with x/y v. row/col indexing (swap meshgrid for ndgrid).
domain = ones(100);
[xx,yy] = meshgrid(1:100);
xv=[40;50;60;50;40];
yv=[60;50;60;70;60];
% plot(xv,yv) %plot the polygon
xvec = xx(:);
yvec = yy(:);
in=inpolygon(xx(:),yy(:),xv,yv);
domain(sub2ind([100 100],xvec(in),yvec(in)))=2;
imshow(domain); caxis([0,2])
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Elementary Polygons 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!