puntos plano graficos graficar ejercicios dibujar coordenadas cartesiano java coordinates jts

plano - java 2d pdf



¿Calcular si un objeto está dentro de un conjunto de coordenadas? (2)

Puede comenzar desde aquí: http://en.wikipedia.org/wiki/Point_in_polygon

También puede buscar en JTS Topology Suite . Y en particular usa esta función .

EDITAR : Aquí hay un ejemplo usando JTS:

import java.util.ArrayList; import com.vividsolutions.jts.geom.Coordinate; import com.vividsolutions.jts.geom.GeometryFactory; import com.vividsolutions.jts.geom.LinearRing; import com.vividsolutions.jts.geom.Point; import com.vividsolutions.jts.geom.Polygon; import com.vividsolutions.jts.geom.impl.CoordinateArraySequence; public class GeoTest { public static void main(final String[] args) { final GeometryFactory gf = new GeometryFactory(); final ArrayList<Coordinate> points = new ArrayList<Coordinate>(); points.add(new Coordinate(-10, -10)); points.add(new Coordinate(-10, 10)); points.add(new Coordinate(10, 10)); points.add(new Coordinate(10, -10)); points.add(new Coordinate(-10, -10)); final Polygon polygon = gf.createPolygon(new LinearRing(new CoordinateArraySequence(points .toArray(new Coordinate[points.size()])), gf), null); final Coordinate coord = new Coordinate(0, 0); final Point point = gf.createPoint(coord); System.out.println(point.within(polygon)); } }

Aquí hay un ejemplo de uso de AWT (que es más simple y es parte de Java SE):

import java.awt.Polygon; public class JavaTest { public static void main(final String[] args) { final Polygon polygon = new Polygon(); polygon.addPoint(-10, -10); polygon.addPoint(-10, 10); polygon.addPoint(10, 10); polygon.addPoint(10, -10); System.out.println(polygon.contains(0, 0)); } }

Tengo un conjunto de puntos X e Y que construyen una forma y necesito saber si un objeto está dentro o no, ¿cuál es el cálculo?

Ejemplo de acordes X e Y:

522.56055 2389.885 544.96 2386.3406 554.18616 2369.2385 535.21814 2351.396 497.5552 2355.8396

No soy muy bueno con las matemáticas :( por lo que agradecería algo de apoyo para entender cómo se hace.

Ejemplo de lo que tengo hasta ahora pero no parece muy confiable:

private boolean isInsideShape(Zone verifyZone, Position object) { int corners = verifyZone.getCorners(); float[] xCoords = verifyZone.getxCoordinates(); float[] yCoords = verifyZone.getyCoordinates(); float x = object.getX(); float y = object.getY(); float z = object.getZ(); int i, j = corners - 1; boolean inside = false; for(i = 0; i < corners; i++) { if(yCoords[i] < y && yCoords[j] >= y || yCoords[j] < y && yCoords[i] >= y) if(xCoords[i] + (y - yCoords[i]) / (yCoords[j] - yCoords[i]) * (xCoords[j] - xCoords[i]) < x) inside = !inside; j = i; } return inside; }


Siempre lo he hecho así.

Pick a point you know to be outside the shape. Make a line between that point and the point you''re trying to find whether it''s inside the shape or not. Count the number of sides of the shape the line crosses. If the count is odd, the point is inside the shape. If the count is even, the point is outside the shape.