当前位置: 首页 > 面试题库 >

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

祁驰
2023-03-14
本文向大家介绍给定三角形ABC和一点P(x,y,z),判断点P是否在ABC内,给出思路并手写代码相关面试题,主要包含被问及给定三角形ABC和一点P(x,y,z),判断点P是否在ABC内,给出思路并手写代码时的应答技巧和注意事项,需要的朋友参考一下

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

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

 

/**

* @brief 计算三角形面积

*/

   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;
   }
   

   

   /**

   \* @brief 判断给定一点是否在三角形内或边上

   */

   
   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;
  	 }
   }

 类似资料:
  • 在空间中,有两条线段,分别是线段AB和线段CD,它们的顶点坐标分别是A(x1,y1,z1),B(x2,y2,z2),C(x3,y3,z3);D(x4,y4,z4),请问如何求线段AB与线段CD的交点坐标?

  • 问题内容: 在Android中,我有一个Path对象,我碰巧知道它定义了一条闭合路径,因此我需要弄清楚路径中是否包含给定点。我所希望的是一些类似的东西 但这似乎并不存在。 我要这样做的特定原因是因为我在屏幕上有一组形状定义为路径,并且我想弄清楚用户单击了哪个形状。如果有更好的方法来解决这一问题,例如使用不同的UI元素,而不是自己“艰难地”进行操作,我愿意提出建议。 如果需要的话,我愿意自己编写算法

  • 本文向大家介绍判断一个链表是否为回文链表,说出你的思路并手写代码相关面试题,主要包含被问及判断一个链表是否为回文链表,说出你的思路并手写代码时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 思路:使用栈存储链表前半部分,然后一个个出栈,与后半部分元素比较,如果链表长度未知,可以使用快慢指针的方法,将慢指针指向的元素入栈,然后如果快指针指向了链表尾部,此时慢指针指向了链表中间  

  • 描述 (Description) 字符类[az&&[^mp]]匹配从a到z的任何字符,除了m到p。 例子 (Example) 以下示例显示了字符类匹配的用法。 package com.wenjiangs; import java.util.regex.Matcher; import java.util.regex.Pattern; public class CharacterClassDemo {

  • 我有以下功能: 此代码给出了

  • 问题内容: 我已经非常努力地设法使位图覆盖屏幕。我也可以获取触摸输入,但是它可以在屏幕上的任何地方获取触摸输入。 我想知道如何检查触摸是否在屏幕上可见的位图上。 服务和视图类如下。我曾想过,但我想不出一种方法:( 问题答案: 考虑使用(或的任何其他子类)代替直接使用。因为您当前的方法实现不正确,这将导致您在显示子视图时遇到问题。 现在,更接近您的问题。您应该初始化并只存储您的的左,上,右和下位置。