给定三角形ABC和一点P(x,y,z),判断点P是否在ABC内,给出思路并手写代码
#include<iostream>
#include<algorithm>
#define ABS_FLOAT_0 0.0001
using namespace std;
// 求三角形的面积
// 根据向量求三角形的面积
double funAreaTriAngle(double dAx, double dAy, double dBx, double dBy, double dCx, double dCy)
{
double dABx = dBx - dAx;
double dABy = dBy - dAy;
double dACx = dCx - dAx;
double dACy = dCy - dAy;
return abs(dABx*dACy - dABy*dACx) / 2.0;
}
// 判断P点是否在三角形ABC中
// 通过ABC,ABP,ACP,BCP的面积判断
bool funTriMid(double dAx, double dAy, double dBx, double dBy, double dCx, double dCy, double dPx, double dPy)
{
double dAreaABC= funAreaTriAngle(dAx, dAy, dBx, dBy, dCx, dCy);
double dAreaABP = funAreaTriAngle(dAx, dAy, dBx, dBy, dPx, dPy);
double dAreaAPC = funAreaTriAngle(dAx, dAy, dPx, dPy, dCx, dCy);
double dAreaPBC = funAreaTriAngle(dPx, dPy, dBx, dBy, dCx, dCy);
if (abs(dAreaABC - (dAreaABP + dAreaAPC + dAreaPB