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

Lua 如何确定点是否在三角形内?,lua,Lua,三角形: 答:(-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和一个点,并返回真/假 通过在lil周围挖掘,我发现了这个(不是lua): 函数pIntrangle(p,p0,p1,p2){ var A=1/2*(-p1.y*p2.x+p0.y*(-p1.x+p2.x)+p0.x*(p1

三角形:

答:(-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和一个点,并返回真/假

通过在lil周围挖掘,我发现了这个(不是lua):

函数pIntrangle(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);
变量符号=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)*符号;
变量t=(p0.x*p1.y-p0.y*p1.x+(p0.y-p1.y)*p.x+(p1.x-p0.x)*p.y)*符号;
返回s>0&&t>0&&t(s+t)<2*A*符号;
}

但是,我完全不能理解这意味着什么…

你知道,x或y的值必须是<2个项目或>2个项目,但不能>3个项目或<3个项目


如果三个坐标大于两个项目,但小于x的1,则知道处于x值之间。如果这对x和y成立,那么你就在三角形内

您知道,仅x或仅y的值必须小于两个项目或>两个项目,但不得>三个项目或小于三个项目


如果三个坐标大于两个项目,但小于x的1,则知道处于x值之间。如果这对x和y成立,那么你就在三角形内

我认为这个老问题会有帮助:我认为这个老问题会有帮助:
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;
}