我使用了Polygon类来查找具有给定点的点是否位于三角形内,但是我不确定如何确定它是否位于三角形的外部或上方。到目前为止,这是我的代码。

    public static void main(String[] args) {

    Scanner s = new Scanner(System.in);
    int c =0;
    Polygon p = new Polygon();

    p.addPoint(s.nextInt(), s.nextInt());
    p.addPoint(s.nextInt(), s.nextInt());
    p.addPoint(s.nextInt(), s.nextInt());

    int y = 3;
    while(y-->0)
    {
    if(p.contains(s.nextDouble(),s.nextDouble()))
        c++;
    }
    System.out.print(c);

}

最佳答案

考虑使用Line2D表示三角形的边缘。

Line2D a = new Line2D.Double();
Line2D b = new Line2D.Double();
Line2D c = new Line2D.Double();

a.setLine(x1, y1, x2, y2);
b.setLine(x2, y2, x3, y3);
c.setLine(x3, y3, x1, y1);

double pntX = s.nextDouble();
double pntY = s.nextDouble();

if (a.ptLineDist(pntX, pntY) == 0 || b.ptLineDist(pntX, pntY) == 0 || c.ptLineDist(pntX, pntY) == 0)
    c++;

10-06 02:35