Polyxpoly returns 空矩阵
Polyxpoly returns empty matrix
我正在编写必须使用 polyxpoly 的代码,但我遇到了一些输出问题。
我的代码:
x=[-286.1018 -363.2334];
y=[4617.4 4725.1];
xv=[-316.7 -128-9 -268.3 -1864.6 -840.4];
yv=[4694.4 4944.7 5641.7 6002.0 4519.9];
[xi,yi] = polyxpoly(x,y,xv,yv);
它 returns:
Empty matrix: 0-by-2
我做错了什么我不明白为什么它不起作用(它应该 return 交点)?有人能帮我吗?这是函数 polyxpoly 的错误吗?
您得到一个空矩阵,因为为 (x,y)
和 (xv,yv)
定义的折线不相交。这可以通过绘制多段线清楚地显示出来:
x=[-286.1018 -363.2334];
y=[4617.4 4725.1];
xv=[-316.7 -128-9 -268.3 -1864.6 -840.4];
yv=[4694.4 4944.7 5641.7 6002.0 4519.9];
mapshow(xv, yv);
mapshow(x,y,'color','red')
我们得到:
如您所见,xv
和 yv
定义的较大形状 未 闭合,因此 [=18= 定义的较小线] 和 y
永远不会与形状相交。如果您想找到交点,则需要 关闭 较大的多边形。这可以简单地通过复制数组中的 first xv
和 yv
点并确保它们出现在 末尾 [=57] 来完成=] xv
和 yv
数组,以便关闭多边形:
x=[-286.1018 -363.2334];
y=[4617.4 4725.1];
xv=[-316.7 -128-9 -268.3 -1864.6 -840.4];
yv=[4694.4 4944.7 5641.7 6002.0 4519.9];
%// Change
xv = [xv xv(1)];
yv = [yv yv(1)];
mapshow(xv, yv);
mapshow(x,y,'color','red')
我们得到:
那就更好了!现在在新的 xv
和 yv
值上尝试 polyxpoly
:
>> [xi,yi] = polyxpoly(x, y, xv, yv)
xi =
-336.5178
yi =
4.6878e+03
我们可以通过对已经生成的图形再添加一个 mapshow
调用来显示这个交点:
mapshow(xi,yi,'DisplayType','point','Marker','o')
我们得到:
可以看到交点已经找到了,在地图上用红圈标出。
我正在编写必须使用 polyxpoly 的代码,但我遇到了一些输出问题。
我的代码:
x=[-286.1018 -363.2334];
y=[4617.4 4725.1];
xv=[-316.7 -128-9 -268.3 -1864.6 -840.4];
yv=[4694.4 4944.7 5641.7 6002.0 4519.9];
[xi,yi] = polyxpoly(x,y,xv,yv);
它 returns:
Empty matrix: 0-by-2
我做错了什么我不明白为什么它不起作用(它应该 return 交点)?有人能帮我吗?这是函数 polyxpoly 的错误吗?
您得到一个空矩阵,因为为 (x,y)
和 (xv,yv)
定义的折线不相交。这可以通过绘制多段线清楚地显示出来:
x=[-286.1018 -363.2334];
y=[4617.4 4725.1];
xv=[-316.7 -128-9 -268.3 -1864.6 -840.4];
yv=[4694.4 4944.7 5641.7 6002.0 4519.9];
mapshow(xv, yv);
mapshow(x,y,'color','red')
我们得到:
如您所见,xv
和 yv
定义的较大形状 未 闭合,因此 [=18= 定义的较小线] 和 y
永远不会与形状相交。如果您想找到交点,则需要 关闭 较大的多边形。这可以简单地通过复制数组中的 first xv
和 yv
点并确保它们出现在 末尾 [=57] 来完成=] xv
和 yv
数组,以便关闭多边形:
x=[-286.1018 -363.2334];
y=[4617.4 4725.1];
xv=[-316.7 -128-9 -268.3 -1864.6 -840.4];
yv=[4694.4 4944.7 5641.7 6002.0 4519.9];
%// Change
xv = [xv xv(1)];
yv = [yv yv(1)];
mapshow(xv, yv);
mapshow(x,y,'color','red')
我们得到:
那就更好了!现在在新的 xv
和 yv
值上尝试 polyxpoly
:
>> [xi,yi] = polyxpoly(x, y, xv, yv)
xi =
-336.5178
yi =
4.6878e+03
我们可以通过对已经生成的图形再添加一个 mapshow
调用来显示这个交点:
mapshow(xi,yi,'DisplayType','point','Marker','o')
我们得到:
可以看到交点已经找到了,在地图上用红圈标出。