/** * Shifts the positions of the coordinates until the coordinate at <code>firstCoordinateIndex</code> * is first. * *@param seq the coordinate sequence to rearrange *@param indexOfFirstCoordinate the index of the coordinate to make first */ public static void scroll(CoordinateSequence seq, int indexOfFirstCoordinate) { scroll(seq, indexOfFirstCoordinate, CoordinateSequences.isRing(seq)); }
/** * Shifts the positions of the coordinates until <code>firstCoordinate</code> * is first. * *@param seq the coordinate sequence to rearrange *@param firstCoordinate the coordinate to make first */ public static void scroll(CoordinateSequence seq, Coordinate firstCoordinate) { int i = indexOf(firstCoordinate, seq); if (i <= 0) return; scroll(seq, i); }
private void normalize(LinearRing ring, boolean clockwise) { if (ring.isEmpty()) { return; } CoordinateSequence seq = ring.getCoordinateSequence(); int minCoordinateIndex = CoordinateSequences.minCoordinateIndex(seq, 0, seq.size()-2); CoordinateSequences.scroll(seq, minCoordinateIndex, true); if (Orientation.isCCW(seq) == clockwise) CoordinateSequences.reverse(seq); }
private static void doTestScroll(CoordinateSequenceFactory factory, int dimension) { // arrange CoordinateSequence sequence = createCircularString(factory, dimension, new Coordinate(20, 20), 7d, 0.1, 22); CoordinateSequence scrolled = sequence.copy(); // act CoordinateSequences.scroll(scrolled, 12); // assert int io = 12; for (int is = 0; is < scrolled.size() - 1; is++) { checkCoordinateAt(sequence, io, scrolled, is, dimension); io++; io%=scrolled.size(); } }
private static void doTestScrollRing(CoordinateSequenceFactory factory, int dimension) { // arrange //System.out.println("Testing '" + factory.getClass().getSimpleName() + "' with dim=" +dimension ); CoordinateSequence sequence = createCircle(factory, dimension, new Coordinate(10, 10), 9d); CoordinateSequence scrolled = sequence.copy(); // act CoordinateSequences.scroll(scrolled, 12); // assert int io = 12; for (int is = 0; is < scrolled.size() - 1; is++) { checkCoordinateAt(sequence, io, scrolled, is, dimension); io++; io%=scrolled.size()-1; } checkCoordinateAt(scrolled, 0, scrolled, scrolled.size()-1, dimension); }