第一步,问题实例化 设三角形三个空间坐标点 A, B,C 。任意点p。判断点p是否在三角形ABC的面上。
方法一面积法:
需要数学基础,三角形两条向量计算三角形面积。 个向量a和b的叉积(向量积)可以被定义为:
求三角形ABC的面积,根据向量积的意义,得到:
如果点p在三角形内,则原始的ABC三角形内分为,ABP,ACP,BCP,三个三角形。三个三角形面积相加等于ABC三角形的面积。
bool
优点:简单,省去判断p点是否在ABC平面的判断。
先判断P点是否在三角形内
这个问题可以转化为四点是否共面问题。没有记错的话这是一道ACM原题.
数学基础:行列式计算。
思路:由四个点创建三个向量,构成一个行列式,若行列式值为0,共面。
3阶行列式的计算方法:
代码:
bool
确定p点在ABC的平面内后,判断在同一平面内,p点是否在三角形ABC内。
1.同向法:
数学基础:向量的叉积。
如上图,AB向量和AQ向量叉积,AB向量和AP向量叉积。得到的两个向量共线且方向相反。Q点就是三角形外侧,p点就是三角形内侧。依次判断三角形的三条边。
bool
测试用例:
int