栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

给定三角形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;   }   }

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/362844.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号