Why polyxpoly does not work?
古いコメントを表示
I have the data points for tow polylines as attached. Where A1 is X-data for polyline 1, B1 is Y-data for polyline 1 and,A2 is X-data for polyline 2 and B1 is Y-data for polyline 2. (as plotted)
I tried to get the intersection point between the two polylines using polyxpoly. But the the result for [xi, yi] are empty !!!
Does anyone has an idea what would be the problem ? Thank you so much...
[xi, yi] = polyxpoly(A1, B1,A2, B2);
plot(A1,B1)
hold on
plot(A2,B2)
hold on
plot(xi, yi, 'bo')

3 件のコメント
Walter Roberson
2018 年 1 月 30 日
When I trace, I see a hint that possibly it has to do with the fact that your second curve has an exactly vertical section. I am not sure, though; I got lost trying to figure out what the internal code is doing.
Faez Alkadi
2018 年 1 月 30 日
編集済み: Faez Alkadi
2018 年 1 月 30 日
採用された回答
その他の回答 (1 件)
Steven Lord
2018 年 4 月 24 日
If you're using release R2017b or later, consider creating polyshape objects and using the intersect function on those objects.
% Load data
D = load('A1', 'A1'); A1 = D.A1;
D = load('A2', 'A2'); A2 = D.A2;
D = load('B2', 'B2'); B2 = D.B2;
D = load('B1', 'B1'); B1 = D.B1;
% Create two polyshape objects
P1 = polyshape(A1, B1, 'Simplify', true);
P2 = polyshape(A2, B2, 'Simplify', true);
% Plot the two polyshape objects so later we can check that the intersection is correct
h1 = plot([P1, P2]);
ax1 = ancestor(h1(1), 'axes');
% Determine the intersection of the two polyshape objects
C = intersect(P1, P2);
% Plot the intersection
figure;
h2 = plot(C);
ax2 = ancestor(h2, 'axes');
% Make the two axes have the same limits for easy comparison
axis(ax2, axis(ax1));
If you flip back and forth between the two figures, you can see that the polyshape C plotted on the second figure is exactly the intersection between the two polyshape objects P1 and P2. If you want coordinates, use the Vertices property.
C.Vertices
If you want to determine if an arbitrary point is inside the intersection, use isinterior.
カテゴリ
ヘルプ センター および File Exchange で Elementary Polygons についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!