判断两条线段是否相交

2014-11-23 22:28:18 · 作者: · 浏览: 0

IDCjrMTHw7TLtcP3z9+2zkFC0+vP37bOQ0TP4L27oaM8L3A+CjxwPsnoQShYMSxZMSksIEIoWDIsIFkyKSwgQyhYMywgWTMpLCBEKFg0LCBZNCmjrMj9vcfQzkFCQ7XEw+a7/c6qo7oyQSA9IDxpbWcgc3JjPQ=="https://www.cppentry.com/upload_files/article/76/1_fvmo9__.jpg" alt="\"> = X1*Y2 + X3*Y1 + X2*Y3 - X3*Y2 - X1*Y3 - X2*Y1。

如果A>0,有向面积为正,ABC为逆时针排列;否则,ABC为顺时针排列。

应用:

德莱联盟

时间限制:1000 ms " 内存限制:65535 KB 难度:1
描述

欢迎来到德莱联盟。。。。

德莱文。。。

德莱文在逃跑,卡兹克在追。。。。

我们知道德莱文的起点和终点坐标,我们也知道卡兹克的起点和中点坐标,问:卡兹克有可能和德莱文相遇吗?,并且保证他们走的都是直线。

输入
几组数据,一个整数T表示T组数据
每组数据 8个实数,分别表示德莱文的起点和终点坐标,以及卡兹克的起点和终点坐标
输出
如果可能 输出 Interseetion,否则输出 Not Interseetion
样例输入
2
-19.74 7.14 22.23 -27.45 -38.79 -5.08 47.51 34.01
-8.61 9.91 -32.47 6.47 -3.81 -16.1 7.82 -6.37
样例输出
Interseetion
Not Interseetion
题目就是给出两条线段的起点坐标和终点坐标,判断这两条线段是否相交,如果相交输出Interseetion;否则输出“Not Intersection”。
#include
      
       
struct node {
    double x, y;
}st1, ed1, st2, ed2;
double get_area(node a0, node a1, node a2) { //求有向面积
    double s = a0.x*a1.y + a2.x*a0.y +a1.x*a2.y - a2.x*a1.y - a0.x*a2.y - a1.x*a0.y;
    return s;
}
int main() {
    int n;
    scanf("%d",&n);
    while(n--) {
        scanf("%lf%lf%lf%lf%lf%lf%lf%lf",&st1.x, &st1.y, &ed1.x, &ed1.y, &st2.x, &st2.y, &ed2.x, &ed2.y);
        double s1 = get_area(st1, ed1, st2);
        double s2 = get_area(st1, ed1, ed2);
        double s3 = get_area(st2, ed2, st1);
        double s4 = get_area(st2, ed2, ed1);
        if(s1 * s2 <= 0 && s3 * s4 <= 0)
            printf("Interseetion\n");
        else
            printf("Not Interseetion\n");
    }
    return 0;
}
      



<script type="text/java script">
<script type="text/java script">BAIDU_CLB_fillSlot("771048");
点击复制链接 与好友分享! 回本站首页
<script> function copyToClipBoard(){ var clipBoardContent=document.title + '\r\n' + document.location; clipBoardContent+='\r\n'; window.clipboardData.setData("Text",clipBoardContent); alert("恭喜您!复制成功"); }
分享到: 更多
<script type="text/java script" id="bdshare_js" data="type=tools&uid=12732"> <script type="text/java script" id="bdshell_js"> <script type="text/java script"> var bds_config = {'snsKey':{'tsina':'2386826374','tqq':'5e544a8fdea646c5a5f3967871346eb8'}}; document.getElementById("bdshell_js").src = "http://bdimg.share.baidu.com/static/js/shell_v2.js cdnversion=" + Math.ceil(new Date()/3600000)