我怎么能确定是(x, y)对正交区域内吗?

1 Ansicht(30天)的
gsourop
gsourop 我17丢。2018
Bearbeitet: 约翰D 'Errico 我17丢。2018
大家好!
假设我们有一个正交区域4 x, y对(1、5),(3、5)、(7)和(3、7)。我想如果一对随机测试,如(0,6),在正交区域。下面的代码,但我没有得到任何回答:
x = [1,3];
y = (5、7);
x0 = 0;
y0 = 6;
如果x0 < x (2)
如果x0 > x (1)
如果y0 < y (2)
如果y0 > y (1)
answer0 = = 1
其他的
answer0 = = 0
结束
结束
结束
结束

Akzeptierte Antwort

里克
里克 我17丢。2018
Bearbeitet:里克 我17丢。2018
你的else语句只是达到内在的部分。如果你想使用这个结构,你应该做到以下几点:
x = [1,3];
y = (5、7);
x0 = 0;
y0 = 6;
answer0 = false;
如果x0 < x (2)
如果x0 > x (1)
如果y0 < y (2)
如果y0 > y (1)
answer0 = true;
结束
结束
结束
结束
然而,一个更紧凑的/更清晰的方式是这样的:
x = [1,3];
y = (5、7);
x0 = 0;
y0 = 6;
如果x0 > min (x) & & x0 <马克斯(x) & &
y0 > min (y) & & y0 <马克斯(y)
answer0 = true;
其他的
answer0 = false;
结束
1 Kommentar
Stephen23
Stephen23 我17丢。2018
如果 - - - - - - 其他的 不需要:
answer0 = x0 > min (x) & & x0 <马克斯(x) & & y0 min (y) & & y0 <马克斯(y)

Melden您西奇,嗯祖茂堂kommentieren。

Weitere Antworten (1)

约翰D 'Errico
约翰D 'Errico 我17丢。2018
Bearbeitet:约翰D 'Errico 我17丢。2018
一个更好的解决方案,而不是这样的嵌套,具体测试,是使用像inpolygon这样的工具。确保它们是排序的,所以真正代表一个多边形,在秩序。但点很容易分类的角度。
px = [1, 3, 3, 1];
py = [5、5、7、7];
inpolygon (2、6、px, py)
ans =
逻辑
1
MATLAB的新版本中,我们也有polyshape工具。
PS = polyshape (px, py)
PS =
polyshape属性:
顶点:[4×2双)
NumRegions: 1
NumHoles: 0
isinterior (PS、2、6)
ans =
逻辑
1
inpolygon polyshape是这些工具的优点是不仅限于简单的矩形,90度的多边形。
因此,如果你点不知道躺在一个良好的秩序来表示一个多边形,我们可以转换到极坐标系,然后在质心点的顺序进行排序。简单的就是使用凸包为你做沉重的思考。如果我换点3和4,所以多边形变成一种图8中,我们可以很容易地恢复一个适当的顺序:
px = (1、3、1、3);
py = [5、5、7、7];
edgelist = convhull (px, py)
edgelist =
1
2
4
3
1
PX = PX (edgelist)
PX =
1 3 3 1 1
PY = PY (edgelist)
PY =
5 5 7 7 5
所以即使在px和py mi-sorted, convhull重新排序。它还连接多边形,所以第一个和最后一个点是相同的,但inpolygon等工具和polyshape不会在意。

Kategorien

找到更多的在基本的多边形帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!

翻译的