| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3300 人关注过本帖
标题:怎么求直线与多边形的交点?
只看楼主 加入收藏
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
快速回复:怎么求直线与多边形的交点?
数据加载中...
 
   



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

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