public Curve createCurve(PointArray points, boolean closed) throws MismatchedReferenceSystemException, MismatchedDimensionException { if (points == null) throw new NullPointerException("Points are required to create a curve"); if (points.size() < 2) throw new IllegalArgumentException( "At least two points are required to create a curve"); // A curve will be created // - The curve will be set as parent curves for the Curve segments // - Start and end params for the CurveSegments will be set List /* <LineSegment> */ segmentList = new ArrayList /* <LineSegment> */(); for (int i = 0; i < points.size() - 1; i++) { int start = i; int end = i + 1; DirectPosition point1 = points.getDirectPosition(start, null); DirectPosition point2 = points.getDirectPosition(end, null); LineSegment segment = createLineSegment(point1, point2); segmentList.add(segment); } if (closed) { LineSegment first = (LineSegment) segmentList.get(0); LineSegment last = (LineSegment) segmentList.get(segmentList.size() - 1); if (!first.getStartPoint().equals(last.getEndPoint())) { LineSegment segment = createLineSegment(last.getEndPoint(), first.getStartPoint()); segmentList.add(segment); } } return getPrimitiveFactory().createCurve(segmentList); }
private Ring processBoundsToRing(Envelope bounds, LineSegment segment, final int D) { DirectPosition one = getPositionFactory().createDirectPosition(segment.getStartPoint().getCoordinate()); one.setOrdinate(D, bounds.getMinimum(D)); DirectPosition two = getPositionFactory().createDirectPosition(segment.getEndPoint().getCoordinate()); two.setOrdinate(D, bounds.getMinimum(D)); DirectPosition three = getPositionFactory().createDirectPosition(two.getCoordinate()); three.setOrdinate(D, bounds.getMaximum(D)); DirectPosition four = getPositionFactory().createDirectPosition(one.getCoordinate()); four.setOrdinate(D, bounds.getMaximum(D)); LineSegment edge1 = getGeometryFactory().createLineSegment(one, two); LineSegment edge2 = getGeometryFactory().createLineSegment(two, three); LineSegment edge3 = getGeometryFactory().createLineSegment(three, four); LineSegment edge4 = getGeometryFactory().createLineSegment(four, one); List<OrientableCurve> edges = new ArrayList<OrientableCurve>(); edges.add(createCurve(Arrays.asList(edge1))); edges.add(createCurve(Arrays.asList(edge2))); edges.add(createCurve(Arrays.asList(edge3))); edges.add(createCurve(Arrays.asList(edge4))); return createRing(edges); }
rList.add( tLineSegment.getStartPoint());
/** * Returns the DirectPositions which define the control points of this Curve * * @return */ public List<DirectPosition> asDirectPositions() { List<DirectPosition> rList = new ArrayList<DirectPosition>(); CurveSegment tSegment = null; // Iterate all CurveSegments (= LineStrings) for (int i = 0; i < this.curveSegments.size(); i++) { tSegment = this.curveSegments.get(i); // TODO: This version only handles the CurveSegment type LineString LineStringImpl tLineString = (LineStringImpl) tSegment; Iterator<LineSegment> tLineSegmentIter = tLineString .asLineSegments().iterator(); while (tLineSegmentIter.hasNext()) { LineSegment tLineSegment = tLineSegmentIter.next(); // Add new Coordinate, which is the start point of the actual // LineSegment rList.add( tLineSegment.getStartPoint().getPosition() ); } } // Add new Coordinate, which is the end point of the last curveSegment rList.add( tSegment.getEndPoint() ); return rList; }
int x = (int)segment.getStartPoint().get(Vector.I1); int y = (int)segment.getStartPoint().get(Vector.I2); b.append("at "+x+"/"+y+": "+arg0.arg0.getText()); b.append("\n");
RenderListener listener = new RenderListener() { @Override public void renderText(TextRenderInfo arg0) { LineSegment segment = arg0.getBaseline(); int x = (int) segment.getStartPoint().get(Vector.I1); // smaller Y means closer to the BOTTOM of the page. So we negate the Y to get proper top-to-bottom ordering int y = -(int) segment.getStartPoint().get(Vector.I2); int endx = (int) segment.getEndPoint().get(Vector.I1); log.debug("renderText "+x+".."+endx+"/"+y+": "+arg0.getText()); ... } ... // other overrides }; PdfReaderContentParser p = new PdfReaderContentParser(reader); for (int i = 1; i <= reader.getNumberOfPages(); i++) { log.info("handling page "+i); p.processContent(i, listener); }
for (LineSegment line : lines) float lx = line.getStartPoint().get(0); float rx = line.getEndPoint().get(0); float y = line.getEndPoint().get(1);
/** * Extract line segments. * * @param curveImpl the curve impl * @param ptList the pt list */ private static void extractLineSegments(CurveImpl curveImpl, WKTSegmentList ptList) { for (LineSegment lineSegment : curveImpl.asLineSegments()) { WKTPoint startPoint = new WKTPoint(lineSegment.getStartPoint()); WKTPoint endPoint = new WKTPoint(lineSegment.getEndPoint()); ptList.addPoint(startPoint); ptList.addPoint(endPoint); } ptList.removeIfFirstLastSame(); }
/** * This is pass #2 ... * @return */ public Ring processBoundsToRing( Envelope bounds, LineSegment segment, final int D ){ DirectPosition one = positionFactory.createDirectPosition(segment.getStartPoint().getCoordinates()); //new DirectPositionImpl( segment.getStartPoint() ); one.setOrdinate( D, bounds.getMinimum(D) ); DirectPosition two = positionFactory.createDirectPosition(segment.getEndPoint().getCoordinates()); //new DirectPositionImpl( segment.getEndPoint() ); two.setOrdinate( D, bounds.getMinimum(D) ); DirectPosition three = positionFactory.createDirectPosition(two.getCoordinates()); //new DirectPositionImpl( two ); three.setOrdinate( D, bounds.getMaximum(D) ); DirectPosition four = positionFactory.createDirectPosition(one.getCoordinates()); //new DirectPositionImpl( one ); four.setOrdinate( D, bounds.getMaximum(D) ); LineSegment edge1 = new LineSegmentImpl( one, two, 0.0 ); LineSegment edge2 = new LineSegmentImpl( two, three, 0.0 ); LineSegment edge3 = new LineSegmentImpl( three, four, 0.0 ); LineSegment edge4 = new LineSegmentImpl( four, one, 0.0 ); List<OrientableCurve> edges = new ArrayList<OrientableCurve>(); edges.add( new CurveImpl( edge1 )); edges.add( new CurveImpl( edge2 )); edges.add( new CurveImpl( edge3 )); edges.add( new CurveImpl( edge4 )); return this.createRing(edges); }
maxDistance = curve.distance( new PointImpl(segments.get(firstSegment).getStartPoint()) );
for (int i=0; i<lines1.size(); i++) { Coordinate c1 = new Coordinate(point2.getRepresentativePoint().getCoordinates()); Coordinate cA = new Coordinate(lines1.get(i).getStartPoint().getCoordinates()); Coordinate cB = new Coordinate(lines1.get(i).getEndPoint().getCoordinates()); double d = CGAlgorithms.distancePointLine(c1, cA, cB); for (int i=0; i<lines1.size(); i++) { for (int y=0; y<lines2.size(); y++) { Coordinate A = new Coordinate(lines1.get(i).getStartPoint().getCoordinates()); Coordinate B = new Coordinate(lines1.get(i).getEndPoint().getCoordinates()); Coordinate C = new Coordinate(lines2.get(y).getStartPoint().getCoordinates()); Coordinate D = new Coordinate(lines2.get(y).getEndPoint().getCoordinates()); double d = CGAlgorithms.distanceLineLine(A, B, C, D); for (int i=0; i<lines2.size(); i++) { Coordinate c1 = new Coordinate(point1.getRepresentativePoint().getCoordinates()); Coordinate cA = new Coordinate(lines2.get(i).getStartPoint().getCoordinates()); Coordinate cB = new Coordinate(lines2.get(i).getEndPoint().getCoordinates()); double d = CGAlgorithms.distancePointLine(c1, cA, cB);