Geometry 检查点是否严格位于三角形内

Geometry 检查点是否严格位于三角形内,geometry,computational-geometry,Geometry,Computational Geometry,给定三角形ABC顶点的3个积分坐标和另一个积分坐标p,如何检查p是否严格位于三角形内部 我知道如何使用面积法检查p是否在三角形内,即面积ABC=面积ABP+面积ACP+面积BCP。但在这个问题中,我希望P严格位于三角形内部。有很多方法可以检查点是否位于三角形内部。我认为最简单的是: 1检查点是否位于所有边的同一侧查找边向量和顶点向量AB x AP、BC x BP、CA x CP的叉积符号 2表示基于AB和AC向量的AP向量-系数及其总和应在0..1范围内。Delphi代码: function P

给定三角形ABC顶点的3个积分坐标和另一个积分坐标p,如何检查p是否严格位于三角形内部


我知道如何使用面积法检查p是否在三角形内,即面积ABC=面积ABP+面积ACP+面积BCP。但在这个问题中,我希望P严格位于三角形内部。

有很多方法可以检查点是否位于三角形内部。我认为最简单的是:

1检查点是否位于所有边的同一侧查找边向量和顶点向量AB x AP、BC x BP、CA x CP的叉积符号

2表示基于AB和AC向量的AP向量-系数及其总和应在0..1范围内。Delphi代码:

function PtInTriangle(ax, ay, bx, by, cx, cy, px, py: Integer): Boolean;
var
  xb, yb, xc, yc, xp, yp, d: Integer;
  bb, cc, oned: Double;
begin
  Result := False;
  xb := bx - ax;
  yb := by - ay;
  xc := cx - ax;
  yc := cy - ay;
  xp := px - ax;
  yp := py - ay;
  d := xb * yc - yb * xc;
  if d <> 0 then begin
    oned := 1 / d;
    bb := (xp * yc - xc * yp) * oned;
    cc := (xb * yp - xp * yb) * oned;
    Result := (bb > 0) and (cc > 0) and (cc + bb < 1);
  end;
end;

我投票结束这个问题,因为它是关于编程或软件开发的,而不是关于主题。