标题:怎么求直线与多边形的交点?
只看楼主
liushikuan
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2008-8-29
结帖率:100%
 问题点数:0 回复次数:3 
怎么求直线与多边形的交点?
怎么求直线与多边形各边的交点?已知直线上两个点的坐标,和多边形各个顶点的坐标。怎么用最快的方法求得这条直线与多边形的交点?
搜索更多相关主题的帖子: 多边形 交点 直线 
2008-11-29 21:20
hitzhang
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:21
帖 子:369
专家分:52
注 册:2006-9-24
得分:0 
首先生成一个12边形
>> theta = -(0:pi/6:2*pi)';
>> lat1 = sin(theta);
>> lon1 = cos(theta);
>> plot(lat1,lon1,'b');axis equal

再随机生成直线的两个点
>> a=rand(1,2);b=rand(1,2);
>> hold on;plot([a(1) b(1)],[a(2),b(2)],'r')

然后求出直线下方的多边形区域
>> l=1000;m=1000;
>> L=[a+l*(b-a);a-l*(b-a);a-l*(b-a)+[0 m];a+l*(b-a)+[0 m];a+l*(b-a)];lat2 = L(:,1);lon2 = L(:,2);
>> [lonm,latm] = polybool('minus',lon1,lat1,lon2,lat2);%就用这个函数!
>> fill(latm,lonm,'k')

最后求出交点坐标
>> A=[latm lonm];
>> for i=1:(size(A,1)-1)
if abs(sum(cross([b-a 0],[A(i,:)-a 0])))<10^-6
A(i,:)
end
end

ans =

    0.3929    0.8947


ans =

    0.8800   -0.4477

>> 供参考

2008-11-30 16:04
liushikuan
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2008-8-29
得分:0 
谢谢。很不错的方法。
太感激了。
2008-11-30 22:31
wuqiang2021
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2021-9-29
得分:0 
如果已知多边形的所有顶点坐标,一条直线上的两个点,求这条直线和多边形的交点?
有能够让C#调用的函数吗?
2021-09-29 15:27



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-246948-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.483667 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved