如上图,判断线段AB和线段CD相交。

分析:如果线段AB和线段CD相交,只能是图中的两种相交情况。可以用向量叉乘来判断。如果(向量AB叉乘向量AC)*(向量AB叉乘向量AD)<= 0 并且(向量CD叉乘向量CA)*(向量CD叉乘向量CB)<= 0,那么说明线段AB与线段CD相交。

设A(X1,Y1), B(X2, Y2), C(X3, Y3), D(X4, Y4),三角形ABC的面积为:2A =  = X1*Y2 + X3*Y1 + X2*Y3 - X3*Y2 - X1*Y3 - X2*Y1。

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

应用:NYOJ 1016  http://acm.nyist.net/JudgeOnline/problem.php?pid=1016

德莱联盟

时间限制: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<stdio.h>
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");elseprintf("Not Interseetion\n");}return 0;
}

判断两条线段是否相交相关推荐

  1. 计算几何-判断两条线段是否相交

    原理:如果两条线段相交,那么必须跨立,就是以一条线段为标准,另一条线段的两端点一定在这条线段的两段 也就是说a b两点在线段cd的两端,c d两点在线段ab的两端 struct point() {do ...

  2. 如何判断两条线段是否相交

    本篇是在 [C++笔记]如何判断2个线段相交 的基础上加上自己的理解和实践总结出的判断两线段是否相交的方法. 判断两条线段是否相交 先附上判断函数 bool judge(int Ax1,int Ay1 ...

  3. 【数学计算】判断两条线段是否相交+计算两条线段的交点和夹角

    序言 还是那句话,学习是为了应用.书到用时方恨"用得少" 1. 计算两条直线的交点 直线一般式方程 A x + B y + C = 0 Ax+By+C = 0 Ax+By+C=0 ...

  4. 判断两条线段是否相交 java_判断两个线段是否相交02

    写在前面 在其他博客中看到这方面的知识,很多都是重复,并且说的总是云里雾里的,所以这里我就自己总结一下这种问题如何求解,判断两个线段是否相交在前面我们提到了会用到叉积的一点知识,那么这里就来详细说一下 ...

  5. 二维空间内,如何判断两条线段是否相交,相离,平行,重合,并求交点

    首先,假设有两条线段p,q,求这两条线段的空间关系. 我们把两条线段的四个顶点看为向量,用坐标表示:p1(p1x,p1y), p2(p2x,p2y), q1(q1x,q1y), q2(q2x, q2y ...

  6. 判断两条线段/直线相交,并求交点

      一.矢量基本知识     因为后面的计算需要一些矢量的基本知识,这里只是简单的列举如下,如果需要更加详细的信息,可以自行搜索wikipedia或google. 1.矢量的概念:如果一条线段的端点是 ...

  7. 【转载】判断两条线段是否相交——(向量叉乘)

    原文:https://www.cnblogs.com/tuyang1129/p/9390376.html 实现:https://blog.csdn.net/yegshun/article/detail ...

  8. Unity3D C#数学系列之判断两条线段是否相交并求交点

    1 引言 问题:已知三维空间中四点A.B.C.D,如何判断线段AB与CD是否相交,若相交则求出交点. 分析: AB.CD要相交,则AB.CD必须要在同一平面内 快速排斥和跨立实验判断是否相交 几何法分 ...

  9. 判断两条直线是否相交c语言,计算几何-两条线段是否相交(三种算法)

    原标题:计算几何-两条线段是否相交(三种算法) 计算几何中,判断线段是否相交是最基本的题目. 所谓几何, 最基本的当然就是坐标, 从坐标中我们可以知道位置和方向,比如:一个点就是一个位置,两点确定一条 ...

最新文章

  1. ASP.net MVC基础
  2. 最大权闭合图hdu3996
  3. jzoj1402-偷懒的小X【贪心】
  4. 文本显示变量_几千个IO状态显示.十几分钟搞定实例
  5. java程序课程总结_Java课程总结报告.pdf
  6. html5 视口,html5 – 在媒体查询中更改视口
  7. java接听电话freeswitch_java通过http协议与Freeswitch对接实现动态添加用户
  8. (转) RabbitMQ学习之spring整合发送同步消息(注解实现)
  9. html ios按钮,ios样式开关按钮jQuery插件
  10. 聊聊微服务架构及分布式事务解决方案!
  11. tp3.2 URL生成
  12. 【尚硅谷】React笔记
  13. D-Genius‘s Gambit(构造)
  14. isbn书号查询php代码,php根据isbn书号查询amazon网站上的图书信息的示例
  15. python 画出决策边界_决策边界用python实现
  16. 解决阿里云不能使用yum问题
  17. 【vue】vue中axios的使用及vue生命周期详解_07
  18. R329开发板根目录 ls 命令文件和文件名乱码其他目录不乱码问题解决
  19. 把时间沉淀到自己的热爱里 | Kagol 的 2022 年终总结
  20. Clarke and MST(最大生成树)

热门文章

  1. idea上一些比较有用的插件
  2. 写一个“特殊”的查询构造器 - (四、条件查询:复杂条件)
  3. Spring MVC同一方法返回JSON/XML格式
  4. 为什么我从 npm 到 yarn 再到 npm?
  5. Less学习笔记 -- Mixins(混合)一
  6. 5.16GW光伏扶贫,各省费用如何筹措?
  7. [转载]HTTP协议详解
  8. (原创)OpenStack服务如何使用Keystone(三)---详细配置Keystone中间件
  9. dine with the dean judge business school
  10. things to do in English debate: scenario