我使用了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++;