累加器传送门:

http://blog.csdn.net/NOIAu/article/details/71775000

这个问题需要用到向量的叉积性质,下面先从百度截一些语句来介绍一下


用向量的叉积来判断一个点是否在线段上

百度百科传送门:http://baike.baidu.com/link?url=TEpSD0TEPEzQhiRj1NhV1xQo6DojftoJaSyHFszURLK0y3rIkk972lKgssE-WdWYoDUzA5s9K6KNJzgfx315dlx8R1DH78XATQHSJv1LT06aYQJ53dO19r0XGNiJDomu2sang5UaxHuKrUlGsoDzu_1vTgq_wlntBN67pazqcbG
向量积,数学中又称外积、叉积,物理中称矢积、叉乘,是一种在向量空间中向量的二元运算。与点积不同,它的运算结果是一个向量而不是一个标量。并且两个向量的叉积与这两个向量和垂直。
计算是这样的,对于向量a(x1,y1),b(x2,y2)
他们的叉积a×b=x1y2-y1x2
叉积是一个向量,表示的是有向面积,方向可以用右手定则来判断,比如要用a×b,就要把a旋转到b,如果四指为旋转方向,拇指所指的方向就是叉积的方向
我们可以发现

如果向量AP×AB的叉积为正,则向量AP在向量AB的顺时针方向,反之为逆时针方向,当两个向量的乘积为0的时候,A,B,P三点共线

回到我们要干的事情,如果叉积为零,可以证明一个点在线段所在的直线上,那么怎么证明在线段上呢?只需要让该点位于线段在坐标系中围成的长方形中就行了,如图所示

所以大家知道该怎么判断了吧

然后上代码

#include<cstdio>
#include<iostream>
#include<cstring>
#include<cmath>using namespace std;const double eps=1e-10;
struct Point{double x,y;
}Q,P1,P2;typedef Point P; P operator - (P a,P b){P p;p.x=a.x-b.x;p.y=a.y-b.y;return p;
}double operator *(P a,P b){return a.x*b.y-b.x*a.y;
}int main(){scanf("%lf%lf%lf%lf%lf%lf",&Q.x,&Q.y,&P1.x,&P1.y,&P2.x,&P2.y);if(fabs((Q-P1)*(Q-P2))<eps){if(min(P1.x,P2.x)-eps<=Q.x&&Q.x-eps<=max(P1.x,P2.x)){if(min(P1.y,P2.y)-eps<=Q.y&&Q.y-eps<=max(P1.y,P2.y)){printf("YES\n");return 0;}}}printf("NO\n");return 0;
}

(计算几何)判断一个点是否在线段上相关推荐

  1. Java黑皮书课后题第3章:*3.34(几何:线段上的点)编程练习题3.32显示了如何测试一个点是否在一个无限长的直线上。修改3.32测试一个点是否在一个线段上。编写程序,输入三个点坐标,显示在否线段

    *3.34(几何:线段上的点)编程练习题3.32显示了如何测试一个点是否在一个无限长的直线上.修改3.32测试一个点是否在一个线段上.编写程序,输入三个点p0 p1 p2坐标,显示p2在否线段p0p1 ...

  2. 如何判断一个用户是否在O365上还是本地Exchange服务器上

    我参考的文章是这个链接. https://mikefrobbins.com/2018/08/02/determine-if-a-mailbox-is-on-premises-or-in-office- ...

  3. php分页上一页下一页判断,一个分页函数:显示“上一页下一页”等

    '************************************************** '函数名:ShowPage '作 用:显示"上一页 下一页"等信息 '参 数 ...

  4. 如何判断一个浮点数是不是整数

    论曰:如何判断一个浮点数是否为整数 上思路! 如果一个浮点数等于它对应的整数位的整数呢? 强制类型转换! // CPP 代码 double n; //被判断的浮点数 cin>>n; //读 ...

  5. java如何判断一个点在一条线段上

    第一步:数学思路思考: 首先肯定是要先证明该点是在一条直线上,我在上篇文章有介绍,可以去看一下,证明一个点在一条直线上,然后去想如何证明一个点在一条线段上,学数学的时候我们知道,如果一个点在一条线段上 ...

  6. java判断线段是否相交函数_计算几何-判断线段是否相交

    计算几何-判断线段相交 判断两线段是否相交: 快速排斥 跨立实验(这两个词也是我看博客的时候看到的,觉得挺高大上的就拿过来用了,哈哈哈) 1. 快速排斥:就是初步的判断一下,两条线段是不是相交,以两条 ...

  7. VC++ 判断点是否在线段上

    这算法在一些地方会用到:在GIS中也有: 新建一个单文档工程: 先把窗口标题改一下:如下图定位到文档类OnNewDocument函数: 定位到OnNewDocument()函数,添加setTitle一 ...

  8. Java黑皮书课后题第3章:*3.32(几何:点的位置)给定一个从点p0(x0,y0)到p1(x1,y1)的有向线段,可以用以下公式判定定点p2(x2, y2)是在线段的左侧、右侧,或者在该线段上

    *3.32(几何:点的位置)给定一个从点p0(x0,y0)到p1(x1,y1)的有向线段,可以用以下公式判定定点p2(x2, y2)是在线段的左侧.右侧,或者在该线段上 题目 题目概述 运行示例 代码 ...

  9. 线段的逆时针方向(顺时针、正上方、正下方、线段上)、相交判断(图解)

    逆时针方向 给定3个点,构造出从同一起点的两条线段,判断两条线段的关系 这个关系包括逆时针.顺时针.重合,其中重合又包括点在线段正上方.正下方情况! 图示 图中都是以p0为源点,p0p1为基准线,判断 ...

最新文章

  1. automake使用说明
  2. SDUT_2121数据结构实验之链表六:有序链表的建立 (对建立的单项链表结构进行排序)
  3. 【动画技巧】在Flash中自定义鼠标外观
  4. 关于C语言static定义函数类型的具体解释
  5. unity 如何获取到屏幕中间_【Unity】屏幕空间位置变换到世界空间位置的方法
  6. 无线网络技术(实验)——无线局域网组成与管理实验
  7. 新建计算机管理员账户,Win10如何新建本地管理员账户
  8. Unity报错之【发布UWP显示“Could not find any supported UWP SDK installations”】
  9. 关于java文件乱码解决
  10. Windows 11 22H2 中文版、英文版 (x64、ARM64) 下载 (updated Jan 2023)
  11. 南卡和声阔真无线降噪耳机哪款更好?南卡和声阔蓝牙耳机测评
  12. 《中国民生银行天眼日志平台架构演进的平凡之路》阅读有感
  13. 深入理解硬盘原理,Mysql索引底层数据结构与算法的来龙去脉(多图)
  14. 单片机c语言什么是ea,单片机ie是什么?怎么用?
  15. STM32F4+DP83848以太网通信指南系列知识储备
  16. unity3d 骨骼模型武器绑定
  17. Java Web程序设计第12章课后第2题
  18. 2019暑假集训总结与记录
  19. 你了解V神吗?先吃透这份不能更全的《以太坊攻略》再说!
  20. iptables端口映射详解

热门文章

  1. 异想家纯C语言矩阵运算库
  2. 【解决方案】如何通过EasyCVR智能边缘网关设备实现前端设备利旧上云,打造AI课程智慧应用
  3. 面板JPanel,滚动面板JScrollPane,文本域JTextArea
  4. 用qt做python界面设计_Python GUI教程(六):使用Qt设计师进行窗口布局
  5. 星巴克中国升级星享俱乐部会员制度
  6. 如何用python写函数_numpy的random函数 如何利用python中的
  7. KINGBASE V7 行转列
  8. 数值积分方法:欧拉积分、中点积分和龙格-库塔法积分
  9. 方舟服务器重置刷礼包,明日方舟周年庆礼包及重置双倍性价比详解 教你最完美的氪金思路...
  10. 孙溟㠭20余载春秋,4000多方印章,这双质朴的手有多么倔强的生命力