/** Creates a {@link WritablePolyline} from a list of vertices. */ public static WritablePolyline polyline( final List< ? extends RealLocalizable > vertices ) { return new DefaultWritablePolyline( vertices ); }
private void updateMinMax() { Arrays.fill( min, Double.POSITIVE_INFINITY ); Arrays.fill( max, Double.NEGATIVE_INFINITY ); for ( double[] vertex : vertices ) { expandMinMax( vertex, vertex ); } }
private void expandMinMax( final double[] mn, final double[] mx ) { for ( int d = 0; d < numDimensions(); d++ ) { if ( mx[ d ] > max[ d ] ) max[ d ] = mx[ d ]; if ( mn[ d ] < min[ d ] ) min[ d ] = mn[ d ]; } }
for (int i = 0; i < pline.numVertices(); i++) { RealLocalizableRealPositionable p = pline.vertex(i); assertEquals(p.getDoublePosition(0), plineVertices[vertexCount++], 1e-5);
@Override public void removeVertex( final int index ) { vertices.remove( index ); updateMinMax(); }
list1.add(new RealPoint(p)); lines.add(new DefaultWritablePolyline(list1)); list2.add(new RealPoint(p)); lines.add(new DefaultWritablePolyline(list2)); list3.add(new RealPoint(p)); lines.add(new DefaultWritablePolyline(list3)); list4.add(new RealPoint(p)); lines.add(new DefaultWritablePolyline(list4));
@Override public void addVertex( final int index, final RealLocalizable vertex ) { if ( vertex.numDimensions() < n ) throw new IllegalArgumentException( "Vertex must have at least" + n + " dimensions" ); final double[] p = new double[ n ]; for ( int d = 0; d < n; d++ ) p[ d ] = vertex.getDoublePosition( d ); vertices.add( index, p ); expandMinMax( p, p ); }
DefaultWritablePolyline pline = new DefaultWritablePolyline(points); lines.add(pline);
@Override public void addVertices( int index, Collection< RealLocalizable > newVertices ) { // add the vertices vertices.addAll( index, newVertices.stream().map( vertex -> { if ( vertex.numDimensions() < n ) throw new IllegalArgumentException( "Vertex must have at least" + n + " dimensions" ); final double[] p = new double[ n ]; for ( int d = 0; d < n; d++ ) p[ d ] = vertex.getDoublePosition( d ); return p; } ).collect( Collectors.toList() ) ); // expand the bounds int offset = index; for ( int i = 0; i < newVertices.size(); i++ ) { final double[] vertex = vertices.get( offset++ ); expandMinMax( vertex, vertex ); } }