public PolygonOverlay() { super(new PolygonRegionOfInterest()); }
@Override public void move(double[] deltas) { getRegionOfInterest().move(deltas); }
final PolygonRegionOfInterest roi = poverlay.getRegionOfInterest(); final int nodeCount = figure.getNodeCount(); while (roi.getVertexCount() > nodeCount) { roi.removeVertex(nodeCount); if (log != null) log.debug("Removed node from overlay."); final Node node = figure.getNode(i); final double[] position = new double[] { node.x[0], node.y[0] }; if (roi.getVertexCount() == i) { roi.addVertex(i, new RealPoint(position)); if (log != null) log.debug("Added node to overlay"); if ((position[0] != roi.getVertex(i).getDoublePosition(0)) || (position[1] != roi.getVertex(i).getDoublePosition(1))) roi.setVertexPosition(i, position);
@Override public void writeExternal(final ObjectOutput out) throws IOException { super.writeExternal(out); final PolygonRegionOfInterest roi = getRegionOfInterest(); final int vertexCount = roi.getVertexCount(); out.writeInt(vertexCount); for (int i = 0; i < vertexCount; i++) { final RealLocalizable vertex = roi.getVertex(i); out.writeDouble(vertex.getDoublePosition(0)); out.writeDouble(vertex.getDoublePosition(1)); } }
@Override public void readExternal(final ObjectInput in) throws IOException, ClassNotFoundException { super.readExternal(in); final PolygonRegionOfInterest roi = getRegionOfInterest(); while (roi.getVertexCount() > 0) { roi.removeVertex(0); } final int vertexCount = in.readInt(); for (int i = 0; i < vertexCount; i++) { final RealPoint vertex = new RealPoint(new double[] { in.readDouble(), in.readDouble() }); roi.addVertex(i, vertex); } }
x_intercepts[ 1 ] = Double.MAX_VALUE; int count_to_left = 0; for ( int i = 0; i < getVertexCount(); i++ ) final double y_start = getEdgeStart( i ).getDoublePosition( 1 ); final double y_end = getEdgeEnd( i ).getDoublePosition( 1 ); final double x_start = getEdgeStart( i ).getDoublePosition( 0 ); final double x_end = getEdgeEnd( i ).getDoublePosition( 0 ); if ( y_start == y_end ) final double x_intercept = interpolateEdgeXAtY( i, position[ 1 ] );
private Roi createLineRoi(final PolygonOverlay overlay) { final PolygonRegionOfInterest region = overlay.getRegionOfInterest(); double[] p1 = new double[overlay.numDimensions()]; double[] p2 = new double[overlay.numDimensions()]; final RealLocalizable vp1 = region.getVertex(0); final RealLocalizable vp2 = region.getVertex(1); vp1.localize(p1); vp2.localize(p2); return createLineRoi(overlay, p1, p2); }
private PolygonOverlay createPolygonOverlay(final Roi roi) { assert roi instanceof PolygonRoi; final PolygonRoi polygonRoi = (PolygonRoi) roi; final PolygonOverlay overlay = new PolygonOverlay(getContext()); final PolygonRegionOfInterest region = overlay.getRegionOfInterest(); final FloatPolygon poly = polygonRoi.getFloatPolygon(); final float[] xCoords = poly.xpoints; final float[] yCoords = poly.ypoints; for (int i = 0; i < xCoords.length; i++) { final double x = xCoords[i]; final double y = yCoords[i]; region.addVertex(i, new RealPoint(x, y)); } assignPropertiesToOverlay(overlay, roi); return overlay; }
private Roi createPointRoi(final PolygonOverlay overlay) { PolygonRegionOfInterest region = overlay.getRegionOfInterest(); int nPoints = region.getVertexCount(); float[] xPts = new float[nPoints]; float[] yPts = new float[nPoints]; for (int i = 0; i < nPoints; i++) { RealLocalizable vertex = region.getVertex(i); xPts[i] = vertex.getFloatPosition(0); yPts[i] = vertex.getFloatPosition(1); } PointRoi roi = new PointRoi(xPts, yPts, nPoints); assignPropertiesToRoi(roi, overlay); return roi; }
@Override public void readExternal(final ObjectInput in) throws IOException, ClassNotFoundException { super.readExternal(in); final PolygonRegionOfInterest roi = getRegionOfInterest(); while (roi.getVertexCount() > 0) { roi.removeVertex(0); } final int vertexCount = in.readInt(); for (int i = 0; i < vertexCount; i++) { final RealPoint vertex = new RealPoint(new double[] { in.readDouble(), in.readDouble() }); roi.addVertex(i, vertex); } }
@Override public void writeExternal(final ObjectOutput out) throws IOException { super.writeExternal(out); final PolygonRegionOfInterest roi = getRegionOfInterest(); final int vertexCount = roi.getVertexCount(); out.writeInt(vertexCount); for (int i = 0; i < vertexCount; i++) { final RealLocalizable vertex = roi.getVertex(i); out.writeDouble(vertex.getDoublePosition(0)); out.writeDouble(vertex.getDoublePosition(1)); } }
public PolygonOverlay() { super(new PolygonRegionOfInterest()); }
@Override public void move(double[] deltas) { getRegionOfInterest().move(deltas); }
private Roi createPolygonRoi(final PolygonOverlay overlay) { final PolygonRegionOfInterest region = overlay.getRegionOfInterest(); final int vertexCount = region.getVertexCount(); if (vertexCount == 1) return createPointRoi(overlay); if (vertexCount == 2) return createLineRoi(overlay); final float[] x = new float[vertexCount]; final float[] y = new float[vertexCount]; for (int v = 0; v < vertexCount; v++) { final RealLocalizable vertex = region.getVertex(v); x[v] = vertex.getFloatPosition(0); y[v] = vertex.getFloatPosition(1); } final Roi roi = new PolygonRoi(x, y, vertexCount, Roi.POLYGON); assignPropertiesToRoi(roi, overlay); return roi; }
public PolygonOverlay(final Context context) { super(context, new PolygonRegionOfInterest()); this.setAxis(new DefaultLinearAxis(Axes.X), 0); this.setAxis(new DefaultLinearAxis(Axes.Y), 1); }
@Override public void updateFigure(final OverlayView view, final BezierFigure figure) { super.updateFigure(view, figure); final PolygonOverlay polygonOverlay = downcastOverlay(view.getData()); final PolygonRegionOfInterest roi = polygonOverlay.getRegionOfInterest(); final int vertexCount = roi.getVertexCount(); while (figure.getNodeCount() > vertexCount) { figure.removeNode(vertexCount); } for (int i = 0; i < vertexCount; i++) { final RealLocalizable vertex = roi.getVertex(i); final double x = vertex.getDoublePosition(0); final double y = vertex.getDoublePosition(1); if (figure.getNodeCount() == i) { figure.addNode(new Node(x, y)); } else { final Node node = figure.getNode(i); node.mask = 0; Arrays.fill(node.x, x); Arrays.fill(node.y, y); } } }
public PolygonOverlay(final ImageJ context) { super(context, new PolygonRegionOfInterest()); setAxis(Axes.X, Axes.X.ordinal()); setAxis(Axes.Y, Axes.Y.ordinal()); }