码迷,mamicode.com
首页 > 其他好文 > 详细

关于直线与线段

时间:2015-04-02 20:23:50      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:

求直线与线段的交点

求交点

定比分点法,用叉积求面积,用面积比代替线段长度比

技术分享
Point inter_point(Point A,Point B,Point C,Point D)///返回直线AB和线段CD的交点
{
    if(!intersect(A,B,C,D)) return {-INF*1.0,0};///判断直线AB是否与线段CD相交,不相交必须须特判
    double area1=fabs((B-A)*(C-A));
    double area2=fabs((B-A)*(D-A));
    double x=(area1*D.x+area2*C.x)/(area1+area2);
    double y=(area1*D.y+area2*C.y)/(area1+area2);
    return {x,y};
}
View Code

判断相交,叉积判断左右拐(跨立实验)

技术分享
bool intersect(Point A,Point B,Point C,Point D)///判断直线AB是否与线段CD相交
{
    if(((C-A)*(B-A))*((D-A)*(B-A))<eps) return true;
    return false;
}
View Code

如果判断线段相交则须用快速排除实验和跨立实验

求线段交点必须先判断相交

关于直线与线段

标签:

原文地址:http://www.cnblogs.com/--560/p/4387900.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!