tags:

views:

231

answers:

3

I have a set of points that i want to turn into a closed polygon in Java. I'm currently trying to use java.awt.geom.Point2D and java.awt.geom.Area but can't figure out how to turn a group of the points into an Area.

I think I can define a set of Line2Ds based on the points and then add those to the Areas, but that's a lot of work and I'm lazy. So is there an easier way to go.

The problem is I have a list of lat/lon coordinates and want to build up an area that I can use for hit testing.

Non-core Java libraries are a possibility as well.

Update, I looked at using java.awt.Polygon but it only supports ints and I'm operating with doubles for the coordinates.

+2  A: 

http://bugs.sun.com/bugdatabase/view%5Fbug.do?bug%5Fid=4077518

Hear that, "customer"? You should be using GeneralPath, even though the absence of Polygon2D since the late 1990s is an obvious monster-truck-sized hole in the API.

M1EK
M1EK
better link: http://ptolemy.eecs.berkeley.edu/~ptII/ptolemyII/ptIIlatest/ptII/diva/util/java2d/
M1EK
+1  A: 

If you are actually working with Geodetic lat/lon values, you can actually use OpenMap to do some of this work. I just spent some time using the Geo class in that API to bounce an object around an area defined by a polygon of lat/lon points. There are intersection calls and everything and all of the math is done spherically so that the points are more correct as far as projections go.

Jay R.
A: 

The simplest (and laziest) thing to do is to create a bounding box for the points from the maximum and minimum of the X, Y ordinate values.

If you need a closer fit then rather than devise your own algorithm, this might be a good place to start:

http://en.wikipedia.org/wiki/Convex_hull_algorithms

richj