List of usage examples for com.google.common.geometry S2Polyline vertex
public S2Point vertex(int k)
From source file:com.bc.geometry.s2.S2Util.java
public static double[][] toXYZArray(S2Polyline polyline) { final int numVertices = polyline.numVertices(); final double[][] xyzArray = new double[numVertices][3]; for (int i = 0; i < numVertices; i++) { final double[] vector = new double[3]; final S2Point s2Point = polyline.vertex(i); vector[0] = s2Point.getX(); vector[1] = s2Point.getY(); vector[2] = s2Point.getZ(); xyzArray[i] = vector;//from w w w.ja va 2s . c om } return xyzArray; }
From source file:com.bc.geometry.s2.S2WKTWriter.java
private static String writeLinestringWKT(S2Polyline geometry) { final int numVertices = geometry.numVertices(); if (numVertices < 2) { throw new IllegalArgumentException("Linestring contains less that 2 vertices."); }/*from w w w .j a va2 s . c o m*/ final StringBuilder builder = new StringBuilder(); builder.append("LINESTRING("); for (int i = 0; i < numVertices; i++) { appendWktPoint(geometry.vertex(i), builder); if (i != numVertices - 1) { builder.append(","); } } builder.append(")"); return builder.toString(); }
From source file:com.bc.fiduceo.geometry.s2.BcS2TimeAxis.java
@Override public TimeInterval getIntersectionTime(Polygon polygon) { final S2Polygon inner = (S2Polygon) polygon.getInner(); List<S2Polyline> s2Polylines = inner.intersectWithPolyLine(polyline); if (s2Polylines.isEmpty()) { return null; }/* ww w . j a v a 2 s . c o m*/ if (s2Polylines.size() > 1) { throw new RuntimeException("More than one intersection, not implemented yet!"); } final S2Polyline intersection = s2Polylines.get(0); final S2Point intersectionStartPoint = intersection.vertex(0); final long offsetTime = calculateLineDuration(intersectionStartPoint); final S2Point intersectionEndPoint = intersection.vertex(intersection.numVertices() - 1); final long totalTime = calculateLineDuration(intersectionEndPoint); final long duration = totalTime - offsetTime; final long startMillis = startTime.getTime() + offsetTime; return new TimeInterval(TimeUtils.create(startMillis), TimeUtils.create(startMillis + duration)); }
From source file:com.bc.fiduceo.geometry.s2.BcS2MultiLineString.java
@Override public Point[] getCoordinates() { List<Point> pointList = new ArrayList<>(); for (S2Polyline s2Polyline : s2PolylineList) { int i = s2Polyline.numVertices(); for (int j = 0; j < i; j++) { pointList.add(BcS2Point.createFrom(s2Polyline.vertex(j))); }//from www.j av a 2s.c om } return pointList.toArray(new Point[pointList.size()]); }
From source file:com.bc.fiduceo.geometry.s2.BcS2MultiLineString.java
@Override public boolean isValid() { boolean valid = false; for (S2Polyline s2Polyline : s2PolylineList) { int numVertices = s2Polyline.numVertices(); ArrayList<S2Point> s2PointArrayList = new ArrayList<>(); for (int i = 0; i < numVertices; i++) { s2PointArrayList.add(s2Polyline.vertex(i)); }//from www . ja v a 2s . com valid = s2Polyline.isValid(s2PointArrayList); } return valid; }
From source file:com.bc.fiduceo.geometry.s2.BcS2MultiLineString.java
@Override public boolean isEmpty() { boolean isInitialPointsZero = false; if (s2PolylineList.isEmpty()) { return true; }/*from w ww . j ava 2 s .c o m*/ for (S2Polyline s2Polyline : s2PolylineList) { if (s2Polyline == null) { return true; } int numVertices = s2Polyline.numVertices(); if (numVertices > 0) { for (int i = 0; i < numVertices; i++) { S2Point vertex = s2Polyline.vertex(i); isInitialPointsZero = vertex.getX() == 0 && vertex.getY() == 0 && vertex.getZ() == 0; if (!isInitialPointsZero) { return false; } } } } return isInitialPointsZero; }