java - 查找点是否在三角形内(2D)

标签 java geometry computational-geometry convex-hull

我正在编写 Quick Hull 算法,其中包括检查一个点是否位于三角形内。为此,我创建了以下两个函数,如果点在内部则返回 true,否则返回 false。

但是,从某种意义上说,结果出乎意料,有些点被正确分类,而有些则没有,我无法找出问题所在。有人可以帮我验证我写的代码是否正确。该方法是我使用 vector 来确定一个点是否与三角形的每条边的顶点位于同一侧。 代码是:

public boolean ptInside(Point first, Point last, Point mx, Point cur) {
        boolean b1 = pointInside(first, last, mx, cur);
        boolean b2 = pointInside(last, mx, first, cur);
        boolean b3 = pointInside(first, mx, last, cur);
        return b1 && b2 && b3;

    }

    public boolean pointInside(Point first, Point last, Point mx, Point cur) {
        int x1 = last.xCo - first.xCo;
        int y1 = last.yCo - first.yCo;
        int x2 = mx.xCo - first.xCo;
        int y2 = mx.yCo - first.yCo;
        int x3 = cur.xCo - first.xCo;
        int y3 = cur.yCo - first.yCo;
        int cross1 = x1 * y2 - x2 * y1;
        int cross2 = x1 * y3 - x3 * y1;
        if (cross1 * cross2 > 0)
            return true;
        else
            return false;

    }

最佳答案

我会简单地创建一个多边形,并使用它的 contains(Point)方法。为什么要重新发明轮子?

关于java - 查找点是否在三角形内(2D),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12583127/

相关文章:

java - 使用 AES 和长 key 进行一次分组密码解密

c++ - 寻找沿圆绘制时所占据的角矩形(见图)

java - 如何在java中返回一个2D字符?

algorithm - 给定一组格点,有多少组点?

computational-geometry - 圆圆周上的最佳点

java - 是否可以将pdf文档保存到字节数组(java的aspose.pdf)

java - 将整数转换为四字节数组

matlab - 三角形网格上的最近点

matlab - 寻找近邻

java - 平面设计 Java Swing 外观和感觉