/** * Returns the closest point on the contour to the provided point in space * @return index of closest point */ int closestPoint( Point2D_F64 target ) { double bestDistance = Double.MAX_VALUE; int bestIndex = -1; for (int i = 0; i < contour.size(); i++) { Point2D_I32 c = contour.get(i); double d = UtilPoint2D_F64.distanceSq(target.x,target.y,c.x,c.y); if( d < bestDistance ) { bestDistance = d; bestIndex = i; } } return bestIndex; } }
@Override public double computeDistance(AssociatedTriple pt) { transfer.transfer_1_to_3(pt.p1.x,pt.p1.y,pt.p2.x,pt.p2.y,c); double error = UtilPoint2D_F64.distanceSq(c.x/c.z, c.y/c.z, pt.p3.x, pt.p3.y); transfer.transfer_1_to_2(pt.p1.x,pt.p1.y,pt.p3.x,pt.p3.y,c); error += UtilPoint2D_F64.distanceSq(c.x/c.z, c.y/c.z, pt.p2.x, pt.p2.y); return error; }
private void findBestPoints(int x, int y, List<Point2D_F64> pts , List<Integer> selected ) { double bestDist = clickDistance*clickDistance; GrowQueue_I32 bestIndexes = new GrowQueue_I32(20); for( int i = 0; i < pts.size(); i++ ) { if( !isValidPoint(i) ) continue; Point2D_F64 p = pts.get(i); double d = UtilPoint2D_F64.distanceSq(p.x, p.y, x, y); if( d < bestDist ) { bestDist = d; bestIndexes.reset(); bestIndexes.add(i); } else if( Math.abs(d - bestDist) < 0.01 ) { bestIndexes.add(i); } } if( bestIndexes.size() > 0 ) { int indexRight = bestIndexes.get(0); } for (int i = 0; i < bestIndexes.size(); i++) { selected.add(bestIndexes.get(i)); } }
private void findBestPoints(int x, int y, List<Point2D_F64> pts , List<Integer> selected ) { double bestDist = clickDistance*clickDistance; GrowQueue_I32 bestIndexes = new GrowQueue_I32(20); for( int i = 0; i < pts.size(); i++ ) { if( !isValidPoint(i) ) continue; Point2D_F64 p = pts.get(i); double d = UtilPoint2D_F64.distanceSq(p.x, p.y, x, y); if( d < bestDist ) { bestDist = d; bestIndexes.reset(); bestIndexes.add(i); } else if( Math.abs(d - bestDist) < 0.01 ) { bestIndexes.add(i); } } if( bestIndexes.size() > 0 ) { int indexRight = bestIndexes.get(0); } for (int i = 0; i < bestIndexes.size(); i++) { selected.add(bestIndexes.get(i)); } }