matlab如何判断点在多边形内部或边界上?
1、如何判断一个点在多边形内部?
xv= [0 3 3 0 0]; %x坐标
yv= [0 0 3 3 0];%y坐标
x=1.5;
y=1.5;
in=inpolygon(x,y,xv,yv)
plot(xv,yv,x(in),y(in),'.r',x(~in),y(~in),'.b')
2、xv= [0 3 3 0 0]; %x坐标
yv= [0 0 3 3 0];%y坐标
x=4;
y=4;
in=inpolygon(x,y,xv,yv)
plot(xv,yv,x(in),y(in),'.r',x(~in),y(~in),'.b')
3、对于多个点判断时,依然可以
xv= [0 3 3 0 0]; %x坐标
yv= [0 0 3 3 0];%y坐标
x = rand(10,1)*4; y = rand(10,1)*4;%生成随机坐标
in=inpolygon(x,y,xv,yv)
plot(xv,yv,x(in),y(in),'.r',x(~in),y(~in),'.b')
4、点在边界上时是什么情况?属于四边形内部吗?
xv= [0 3 3 0 0]; %x坐标
yv= [0 0 3 3 0];%y坐标
x=0;
y=0;
in=inpolygon(x,y,xv,yv)
plot(xv,yv,x(in),y(in),'.r',x(~in),y(~in),'.b')
当然依然属于四边形内部!
5、那么如何判断点在边界上呢?
xv= [0 3 3 0 0]; %x坐标
yv= [0 0 3 3 0];%y坐标
x=0;
y=0;
[in on]=inpolygon(x,y,xv,yv)
plot(xv,yv,x(in),y(in),'.r',x(~in),y(~in),'.b')
on=1表示点在边界上;on=0表示点不在边界上。
6、那么如何判断点在真实的内部而非边界上呢?
xv= [0 3 3 0 0]; %x坐标
yv= [0 0 3 3 0];%y坐标
x=1;
y=1;
[in on]=inpolygon(x,y,xv,yv)
plot(xv,yv,x(in),y(in),'.r',x(~in),y(~in),'.b')
很明显 in=1且on=0时,表示点真正的在内部而非边界上。
排队了in=1时,点在边界上也属于内部的情况。