2009-09-02 12 views
5

Tengo un conjunto de puntos que quiero convertir en un polígono cerrado en Java. Actualmente estoy tratando de usar java.awt.geom.Point2D y java.awt.geom.Area, pero no puedo entender cómo convertir un grupo de puntos en un Área.Convierta una lista java.awt.geom.Point2D a java.awt.geom.Area

Creo que puedo definir un conjunto de Line2D en función de los puntos y luego agregarlos a las áreas, pero eso es mucho trabajo y soy flojo. Entonces, ¿hay una manera más fácil de ir?

El problema es que tengo una lista de coordenadas lat/lon y quiero construir un área que pueda usar para las pruebas de detección.

Las bibliotecas de Java que no son core también son una posibilidad.

Actualización, analicé el uso de java.awt.Polygon pero solo admite ints y estoy trabajando con dobles para las coordenadas.

Respuesta

3

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4077518

escuchar que, "cliente"? Debería estar usando GeneralPath, aunque la ausencia de Polygon2D desde fines de la década de 1990 es un agujero obvio del tamaño de un camión monstruo en la API.

+1

Aviso existe una aplicación Polygon2D flotando alrededor de la cual llegó originalmente de la interfaz de usuario de Berkeley laboratorio: http://www.google.com/url?sa=t&source=web&ct=res&cd=5&url=http%3A%2F%2Fptolemy.eecs.berkeley.edu%2F~ptII%2FptolemyII%2FptIIlatest%2FptII% 2Fdiva% 2Futil% 2Fjava2d% 2FPolygon2D.java & ei = BNSeSqr3O4y4M7eMmIwC & usg = AFQjCNErxCV1f6zlpi60FEqPkgG1rAfx5A & sig2 = eWfBVNHxVQzY1eJ3DZvC1Q – M1EK

+1

mejor enlace: http://ptolemy.eecs.berkeley.edu/~ptII/pto lemyII/ptIIlatest/ptII/diva/util/java2d/ – M1EK

+0

'GeneralPath' ya es una clase heredada. Consulte [esta pregunta y respuestas para ver algunas alternativas] (http://stackoverflow.com/q/11465330/935676). Podemos celebrar el vigésimo aniversario de este error en septiembre;) – amoebe

1

Si realmente está trabajando con valores geodésicos lat/lon, en realidad puede usar OpenMap para hacer parte de este trabajo. Acabo de pasar un tiempo usando el Geo class en esa API para hacer rebotar un objeto alrededor de un área definida por un polígono de puntos lat/lon. Hay intersection calls y todo y todos los cálculos se realizan de forma esférica para que los puntos sean más correctos en lo que respecta a las proyecciones.

0

Lo más simple (y más perezoso) que hacer es crear un cuadro delimitador para los puntos del máximo y mínimo de los valores de ordenadas X, Y.

Si necesita un ajuste más cercano a continuación, en lugar de diseñar su propio algoritmo, esto podría ser un buen punto de partida:

Cuestiones relacionadas