给定平面上一点p(x0,y0),判断该点是否在三角形ABC中,三角形顶点坐标分别为A(xa,xb),B(xb,yb),C(xc,yc)。可以使用面积法来判断,方法如下:其中S(A,B,C)表示三角形ABC的面积。
1、 若abs( S(A,B,C) ) = abs( S(P,B,C) ) + abs( S(A,P,C) ) + abs( S(A,B,P) ) ,则P在三角形ABC的内部或边上;如果还有abs( S(P,B,C) )、abs( S(A,P,C) ) 和abs( S(A,B,P) )全都大于0,则说明P在三角形ABC的内部,否则P在三角形ABC的边上,具体为:S(P,B,C)为0,则说明P在BC边上,S(A,P,C)为0,则说明P在AC边上,S(A,B,P)为0,则说明P在AB边上;
2、 若abs( S(A,B,C) ) < abs( S(P,B,C) ) + abs( S(A,P,C) ) + abs( S(A,B,P) ) ,则P在三角形ABC的外部;
3、 对abs( S(A,B,C) ) > abs( S(P,B,C) ) + abs( S(A,P,C) ) + abs( S(A,B,P) ) 情况在理论上是不存在的
此处又引出另一个问题,如何求平面中三角形的面积?这个可以使用叉乘法来实现,即S(A,B,C)为向量AB叉乘AC所得向量模的1/2,再对该值求绝对值就是三角形ABC的面积。
分享到:
相关推荐
判断一个点是否在三角形内的几种算法(2D). 一、根据面积来计算 二、利用矢量叉积来计算
主要为大家详细介绍了java判断某个点是否在所画多边形或圆形内的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
经典算法介绍判断一个点是否在一个区域里面。
superfacets-2d 三角形网格的超面分割算法的 C++ 实现
2D转3D算法,能够实现2D图像转成具有3D效果
判断2d点是否在多边形内
2D 相位展开算法 对相位质量引导相位展开方法运行 QualityGuidedUnwrap2D。 为 Goldstein 的分支切割相位展开方法运行 GoldsteinUnwrap2D。 (可根据要求提供质量指导方法的 3D 实施)
这个是我个人自己写的Unity 2D环境中的寻路, 分别有两个文件夹,AIPath 是正面2D 环境,45AIPath 是斜45度角(2.5D)环境,本资源包含了一份PDF繁体中文教学文件,而在最后我也提出了一些问题,望高手解答。此算法也是...
mesh2d是一个很好用的三角形网格划分工具
基于VC的代码,演示了2D图形学一些鼠标交互算法,还包含了CAD软件中标尺界面的制作。
利用vc++实现Kriging 算法,此算法实现 2D和3D地图等高线
Cartographer 2D SLAM算法,2D 的流行算法,非常不错的文档
基于2D-PCA与2D-MMC的人脸识别算法.pdf
2D 折线顶点平滑算法—— 平滑折线通常可以通过两种方式: 通过插值,即在新的平滑曲线上,原始的折线点仍保持不变; 通过近似,这意味着新的平滑曲线将近似原始的折线,但原始点不会被保留下来。 本代码对两种...
包含用于 2D 不规则打包的算法和算法的简单教程 算法 Bottom-Left-Fill.py:嵌套问题的 2-exchange 启发式 2002 genetic_algorithm.py:嵌套问题的 2 交换启发式算法 2002 nfp_test.py:针对不规则切削问题的完整...
在 2D 视线算法的许多示例中,都使用了三角函数等昂贵的运算。此外,为了简单起见,某些方法在其中故意不准确。在这里,我们给出了一种算法,它不会伪造数字,并且只使用基本的算术:加法、减法、乘法和除法。这并...
(几何:Triangle2D类)定义Triangle2D类和MyPoint2D类(自己定义:2维点),要求如下: A、三个MyPoint2D类数据域成员:p1、p2、p3;这个三个数据域都带有get和set方法。 B、一个无参构造方法,创建三个坐标为(0,0)...
基本思想是:根据某种几何特性对数据进行匹配,并设这些匹配点为假想的对应点,然后根据这种对应关系求解运动参数。再利用这些运动参数对数据进行变换。并利用同一几何特征,确定新的对应关系,重复上述过程。
2D_MUSIC_2DMUSIC_2dMUSIC算法_2d-music_2Dmusic_二维角度估计_源码.rar