如何确定一个点是否在三角形内?

三角形:

A:(-538.10,-41.64)

B:(-544.67,-57.29)

C:(-553.75,-35.07)

检查的点:

P1:(-548.20,-45.77)

P2:(-553.00,-30.60)

我已经知道 P1 在内部,而 P2 在外部,但我正在尝试找出一个通过提供△ABC和一个点的坐标并返回true/false的公式来解决这个问题。通过挖掘一些东西,我发现了这个(不是lua):

function ptInTriangle(p, p0, p1, p2) {
    var A = 1/2 * (-p1.y * p2.x + p0.y * (-p1.x + p2.x) + p0.x * (p1.y - p2.y) + p1.x * p2.y);
    var sign = A < 0 ? -1 : 1;
    var s = (p0.y * p2.x - p0.x * p2.y + (p2.y - p0.y) * p.x + (p0.x - p2.x) * p.y) * sign;
    var t = (p0.x * p1.y - p0.y * p1.x + (p0.y - p1.y) * p.x + (p1.x - p0.x) * p.y) * sign;

    return s > 0 && t > 0 && (s + t) < 2 * A * sign;
}

然而,我无法理解这意味着什么......

点赞
用户7880056
用户7880056

你知道只有 x 值或只有 y 值必须小于两个项目或大于两个项目,但不能大于三个项目或小于三个项目。

如果你有超过两个项目但在三个坐标中 x 值少于 1,那么你知道你在 x 值之间。如果这对于 x 和 y 都成立,则你在三角形内部。

2017-08-10 21:28:37