前些日子,我写了一个Java类来计算一个point(X,Y)
是否在多边形内部。(其中的X
和Y
是double
类型,因为它们是地理坐标)。
我知道Java有Polygon
类,但我不得不使用Path2D
和Point2D
,因为Polygon
只允许使用整数值,而不能使用double
。
当我利用Path2D
完成多边形之后,我使用了contains
方法(该方法已经包含在Path2D
中),这样我的问题就解决了。
但现在,我想要将这个程序导入到Android中,遇到了一些问题。因为Path2D
需要导入:
import java.awt.geom.Path2D;
import java.awt.geom.Point2D;
在Android中不存在awt,所以我无法使用它。
那么,是否有类似于具有contains
方法的Path2D
的类?或者我需要自己计算?
以下是我在Java中如何使用Path2D
实现的:
private void ConstructPolygon(Vector<Point2D> coodinates)
{
this.polygon.moveTo(coodinates.get(0).getX(), coodinates.get(0).getY());
//System.out.println(coodinates.get(0).getX() + " " + coodinates.get(0).getY());
//System.out.println("asda");
for(int i = 1; i < this.num_points; i++)
{
//System.out.println(coodinates.get(i).getX() + " " + coodinates.get(i).getY());
this.polygon.lineTo(coodinates.get(i).getX(), coodinates.get(i).getY());
}
this.polygon.closePath();
}
public boolean InsideCity(Point2D punto)
{
return this.polygon.contains(punto);
}