已知:三角形ABC,点P

问题:点P是否在三角形内

1.面积法

如果三角形PAB、PAC和PBC的面积之和与三角形ABC的面积相等,则可判定点P在三角形ABC内(包括在三条边上)。

已知三角形顶点A、B、C)的坐标分别为(Ax, Ay)、(Bx, By)、(Cx, Cy),即可计算其面积:
     S = |(Ax * By + Bx * Cy + Cx * Zy - Ay * Bx - By * Cx - Cy * Ax) / 2|

2.线段法

如果线段PA与线段BC、或者线段PB与线段AC、或者线段PC与线段AB有交点,则可判定点P在三角形之外。

如果点P到AB的距离比C到AB的距离短,并且点P到AC的距离比B到AC的距离短,并且点P到BC的距离比A到BC的距离短,则可以判定点P在三角形内。

3.向量法

设三边方程BC:fa(x,y)=0,AC:fb(x,y)=0,AB:fc(x,y)=0
以BC为例,在三角形内的点必须与点A在BC的同侧,对于点P(x,y)在三角形内首先要满足fa(x,y)*fa(Ax, Ay)>0,其他边也同理,所以只要比较fa(x,y)*fa(Ax, Ay)、fb(x,y)*fb(Bx, By)、fc(x,y)*fc(Cx, Cy)
这三个数的正负性
1)三个数都是正数:D在三角形内
2)至少有一个负数:D在三角形外
3)有且只有一个0,另两个为正数:在三角形边上
4)有且只有一个0,一个正数一个负数:在三角形边的延长线上,也算在三角形外,因为满足2
5)有二个0:在三角形的顶点上
6)不可能出现3个0,或3个负数,或一个0两个负数的情况

4.同向法

假设点P位于三角形内,沿着ABCA的方向在三条边上行走时,点P始终位于边AB,BC和CA的右侧。当选定线段AB时,点C位于AB的右侧,同理选定BC时,点A位于BC的右侧,最后选定CA时,点B位于CA的右侧,所以当选择某一条边时,我们只需验证点P与该边所对的点在同一侧即可。判断两个点在某条线段的同一侧可以通过叉积来实现,连接PA,将PA和AB做叉积,再将CA和AB做叉积,如果两个叉积的结果方向一致,那么两个点在同一侧。

判断点P是否在三角形ABC内相关推荐

  1. 如何判断点P是否在三角形ABC内?

    本题最好不要用直线方程或线段夹角来判断,因为这涉及到分类与讨论,下面的算法是相对比较好的算法,代码如下: #include<iostream> #include<cmath> ...

  2. 判断点P是否在三角形ABC内部

    判断点P是否在三角形ABC内部 (1)计算叉乘 MA = PA×PB MB = PB×PC MC = PC×PA (2)叉乘算法 PA×PB = (A-P)×(B-P)        = (Xa-Xp ...

  3. 笔试面试题目:点P是否在三角形ABC内?

    一. 前面的话 在面试刷题这个栏目中,我主要引入一些典型有趣的题目,跟大家一起分享下思路和解法. 有的朋友,不需要面试,那也无妨,看看相关的题目,挺有趣的,也可以保持头脑的灵活. 有的朋友,需要面试, ...

  4. 给定三角形 ABC 和一点 P(x,y,z),判断点 P 是否在 ABC 内,给出思路并手写代码

    三角形面积 根据面积法,如果 P 在三角形 ABC 内,那么三角形 ABP 的面积+三角形 BCP 的面积+三角形 话不多说了,直接上代码 根据面积法,如果 P 在三角形 ABC 内,那么三角形 AB ...

  5. 给定三角形ABC和一点P(x, y),判断P是否在三角形内

    解题思路: 根据点P与三角形其中两点所形成的三角形面积之和与三角形ABC面积进行比较,如果相等则点P在三角形内,不相等则不在三角形ABC内. 解题步骤: 一.根据给定的三点坐标计算三角形的面积: 二. ...

  6. android 随机坐标,按键精灵安卓版如何随机坐标判断点击.在线等大神回复

    / '定义一些常用变量:IntX IntY 找色模块返回值用,win_x win_y 屏幕分辨率用,win_w win_h 分辨率比例用 Dim x,y Dim IntX,IntY Dim win_x ...

  7. 牛客C++面经——给定三角形ABC和一点P(x,y,z),判断点P是否在ABC内

    目录 思路: 计算面积的方法:海伦公式 注意: 代码: 参考:

  8. 【无码专区8】三角形二维数点——计数有多少个给定点落在三角形区域内

    因为只有std,没有自我实现,所以是无码专区 主要是为了训练思维能力 solution才是dls正解,但是因为只有潦草几句,所以大部分会有我自己基于正解上面的算法实现过程,可能选择的算法跟std中dl ...

  9. 【C/C++题目】输入三角形ABC的三个角坐标, 输出三角形ABC的面积

    文章目录 一.实现代码 二.运行效果 利用海伦公式求三角形面积,因此先利用两点距离公式求得边长,即可求出面积 一.实现代码 #include <iostream> #include < ...

最新文章

  1. 基于图像的三维物体重建:在深度学习时代的最新技术和趋势综述之训练
  2. nanopore测序技术专题(六):测序错误率太高无法使用?
  3. 【转】android手势处理揭秘
  4. x5675相当于e5_至强X5675比I7 2600强多少 至强X5675相当于几个AMD X2 220
  5. 《设计模式》一书PPT浏览及下载地址
  6. hdu 2454 Degree Sequence of Graph G(可简单图化判定)
  7. TZOJ 1321 Girls and Boys(匈牙利最大独立集)
  8. python笔记之函数参数(缺省参数,命名参数,不定长参数)
  9. java 链接mysql 产生500W数据模拟生成环境
  10. 单链表基本操作在主函数中的实现
  11. 一维战舰(51Nod-1521)
  12. 自学python能干什么-python能干啥
  13. C语言 — 编程规范、标识符命名规范
  14. Spring源码下载步骤
  15. 01_测试基础知识---功能测试常用方法/正交表的使用
  16. mysql 公历变农历_巧用SQL函数让公历变农历
  17. 聚合微服务中的 Swagger API 文档
  18. jQuery源码分析之$.grep()函数四问
  19. 《职来职往》 经典语录
  20. html水平镜像和垂直镜像,使用CSS水平/垂直翻转/镜像图像

热门文章

  1. 网易互娱AI研究工程师实习生一面——记人生的第一次面试
  2. Java如何判断字符串中包含有全角,半角符号
  3. 三.螺丝与核弹。【成长篇】
  4. Android ExceptionThrowable 常见异常和解决方法 奔溃日志上报 monkey异常修改
  5. 直播常见问题原因汇总
  6. 学校对计算机教师的检查要求,计算机学院2015-2016学年第二学期期中教学检查方案...
  7. winform Control与UserControl的区别
  8. Docker学习手记-1
  9. C语言经典一百题(六)用*号输出字母C的图案。
  10. 低成本快速开发 LoRa 终端:从 0 到 1