给定三角形ABC和一点P,判断点P是否在ABC内,给出思路并手写代码

给定三角形ABC和一点P,判断点P是否在ABC内,给出思路并手写代码,第1张

给定角形ABC和一点P,判断点P是否在ABC内,给出思路并手写代码

根据面积法,如果P在三角形ABC内,那么三角形ABP的面积+三角形BCP的面积+三角形ACP的面积应该等于三角形ABC的面积。算法如下:

#include <iostream>#include <math.h>using namespace std;#define ABS_FLOAT_0 0.0001struct point_float{float x;float y;};

 

   float GetTriangleSquar(const point_float pt0, const point_float pt1, const point_float pt2)   {   point_float AB,   BC;   AB.x = pt1.x - pt0.x;   AB.y = pt1.y - pt0.y;   BC.x = pt2.x - pt1.x;   BC.y = pt2.y - pt1.y;   return fabs((AB.x * BC.y - AB.y * BC.x)) / 2.0f;   }               bool IsInTriangle(   constpoint_float A,    constpoint_float B,    constpoint_float C,    constpoint_float D)   {   floatSABC, SADB, SBDC, SADC;   SABC = GetTriangleSquar(A, B, C);   SADB = GetTriangleSquar(A, D, B);   SBDC = GetTriangleSquar(B, D, C);   SADC = GetTriangleSquar(A, D, C);   floatSumSuqar = SADB + SBDC + SADC;   if((-ABS_FLOAT_0 < (SABC - SumSuqar)) && ((SABC - SumSuqar) < ABS_FLOAT_0))   {   returntrue;   }   else   {   returnfalse;   }   }

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4875959.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-11
下一篇 2022-11-11

发表评论

登录后才能评论

评论列表(0条)

保存