参考:算法:判断点在直线的左右哪一侧.

判断 某一点在直线左右侧

方法一:
左右方向是相对前进方向的,只要指定了前进方向就可以知道左右(比如指定前进方向是从直线的起点到终点).判断点在直线的左侧还是右侧是计算几何里面的一个最基本算法.使用矢量来判断.
定义:平面上的三点P1(x1,y1),P2(x2,y2),P3(x3,y3)的面积量:

S(P1,P2,P3)=|y1 y2 y3|= (x1-x3)(y2-y3)-(y1-y3)(x2-x3)

当P1P2P3逆时针时S为正的,当P1P2P3顺时针时S为负的。

令矢量的起点为A,终点为B,判断的点为C,
如果S(A,B,C)为正数,则C在矢量AB的左侧;
如果S(A,B,C)为负数,则C在矢量AB的右侧;
如果S(A,B,C)为0,则C在直线AB上。

方法二:

它可以用来判断点在直线的某侧。进而可以解决点是否在三角形内,两个矩形是否重叠等问题。向量的叉积的模表示这两个向量围成的平行四边形的面积。
设矢量P = ( x1, y1 ),Q = ( x2, y2 ),则矢量叉积定义为由(0,0)、p1、p2和p1+p2所组成的平行四边形的带符号的面积,即:P×Q = x1y2 - x2y1,其结果是一个伪矢量。
显然有性质 P × Q = - ( Q × P ) 和 P × ( - Q ) = - ( P × Q )。
叉积的一个非常重要性质是可以通过它的符号判断两矢量相互之间的顺逆时针关系:
若 P × Q > 0 , 则P在Q的顺时针方向。
若 P × Q < 0 , 则P在Q的逆时针方向。
若 P × Q = 0 , 则P与Q共线,但可能同向也可能反向。
叉积的方向与进行叉积的两个向量都垂直,所以叉积向量即为这两个向量构成平面的法向量。
如果向量叉积为零向量,那么这两个向量是平行关系。

因为向量叉积是这两个向量平面的法向量,如果两个向量平行无法形成一个平面,其对应也没有平面法向量。所以,两个向量平行时,其向量叉积为零。

通过叉积公式来判断一个点在矢量线段的那一侧的方法相关推荐

  1. (计算几何)判断一个点是否在线段上

    累加器传送门: http://blog.csdn.net/NOIAu/article/details/71775000 这个问题需要用到向量的叉积性质,下面先从百度截一些语句来介绍一下 用向量的叉积来 ...

  2. 求面积 (坐标叉积公式+凹多边形面积-坐标公式)

    求面积(AREA) 给出一个简单多边形(没有缺口),它的边要么是垂直的,要么是水平的.要求计算多边形的面积. 多边形被放置在一个X-Y的卡笛尔平面上,它所有的边都平行于两条坐标轴之一.然后按逆时针方向 ...

  3. 如何证明向量的叉积公式?

    叉积是向量的两种主要运算之一.我们设两个空间三维向量分别为 a=(ax,ay,az),b=(bx,by,bz)\bm{a}=(a_x,a_y,a_z),b=(b_x,b_y,b_z) a=(ax​,a ...

  4. 插入公式_一个小工具,彻底帮你搞定在Markdown中插入公式的问题

    在编辑Markdown文档时,插入公式是一个挺麻烦的活儿. 需要掌握LaTex语法.我自己看完语法后,直接放弃,这绝对是反人类的语法.(好吧,是我不会用...) 但是,我相信你看了这篇文章后,绝对能帮 ...

  5. office2007 打开Excel 提示 工作表中的公式包含一个或多个无效引用的解决方法

    打开带有数据或者图表的工作表或工作簿中,有时候会弹出一个对话框"工作表中的公式包含一个或多个无效引用,请验证公式包含的路径.工作簿.区域名称或单元格引用",单击确定后就不再显示,但 ...

  6. 烧一根不均匀的绳要用一个小时,如何用它来判断一个小时十五分钟?

    烧一根不均匀的绳要用一个小时,如何用它来判断一个小时十五分钟? 答案是:需要3跟绳子.假设分别为1号.2号.3号绳子,每个绳子都有A.B端. 思路:首先点燃1号绳子的两端同时点燃2号绳子的A端,1号绳 ...

  7. 用isalpha函数来判断一个字符串中的字符是否是字母

    今天刚学会了一个函数用来判断一个字符串中的字符是否为字母,函数名为isalpha,具体内容为下: 测试一个元素来包装区域设置是字母字符. 以带有颜色区分的格式查看 复制到剪贴板 template< ...

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

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

  9. 如何添加、修改和删除矢量线段

    万能地图下载器除了有强大的谷歌影像.历史地图.高程等高线下载.矢量电子地图下载.百度POI下载.矢量建筑数据下载,以及瓦片导出.各种坐标系的投影转换等专业功能之外,还可以进行矢量标注绘制. 以下将通过 ...

最新文章

  1. shiro系列一、认识shiro
  2. Document,Node,Element,HTMLDocument ,HTMLCollection,HTMLElement,NodeList
  3. 在Windows7中与虚拟机实现远程桌面连接
  4. python中matrix函数_使用python解线性矩阵方程(numpy中的matrix类)
  5. ASP.NET MVC:会导致锁定的会话
  6. linux编译警告 will be initialized after
  7. 深度学习第一次课-数学
  8. 日期和毫秒值 例子
  9. HC大会,华为联合合作伙伴发布一站式物联网IoT开发工具小熊派BearPi
  10. 6003.mavlink协议自定义消息编程
  11. Java SpringMVC
  12. 推荐系统思维导图——第一章
  13. 计算机配置交换机线缆线序,H3C S7500X-G系列交换机
  14. 360手机:360手机刷机 救砖 Twrp、Root、Magisk、360N4S骁龙版、360N5、N5S、N6、N6Lite、N6PRO、N7、N7Lite、N7PRO、Q5、Q5Plus
  15. [NLP论文阅读]Learned in Translation: Contextualized Word Vectors
  16. 第十二章、GDK学习
  17. ie浏览器的html在哪里,windows10的ie在哪里?ie浏览器找不到怎么办
  18. 信息学奥赛一本通:1084:幂的末尾
  19. c++ vs2015 播放音乐_索尼NW-A105HN对比飞傲M11,高解析音乐播放器之间有何差距?...
  20. Linux系统命令(网络通信)

热门文章

  1. 【vs】未能完成操作。拒绝访问。
  2. 【QT】QT Creator编译通过,运行时程序异常结束:Crashed
  3. 12306登录python_Python模拟登录12306
  4. 在linux系统中 通过使用shell,linux系统中的shell和vi编辑器应用详细介绍
  5. php中的时间戳_PHP 时间戳 timestamp
  6. AD(十二)常见IC类封装的创建(+元件复制、粘贴、定向移动、阵列粘贴【详细】)
  7. bzoj2251 外星联络
  8. 专题:机器学习进阶之路——学习笔记整理
  9. 百度地图 ( 二 ) 添加覆盖物
  10. HTTPS加密过程和TLS证书验证