@Override public Number getOrdinate(int dimension) { return coord.getOrdinate(dimension); }
/** * Construct a {@link Point2dImpl} using the first two ordinates of a * {@link Coordinate}. * * @param coord * the {@link Coordinate} */ public Point2dImpl(Coordinate coord) { x = coord.getOrdinate(0).floatValue(); y = coord.getOrdinate(1).floatValue(); }
protected static final float distance(Coordinate a, Coordinate b) { float s = 0; for (int i = 0; i < a.getDimensions(); i++) { final float fa = a.getOrdinate(i).floatValue(); final float fb = b.getOrdinate(i).floatValue(); s += (fa - fb) * (fa - fb); } return s; }
protected static final float distance(Coordinate a, Coordinate b) { float s = 0; for (int i = 0; i < a.getDimensions(); i++) { final float fa = a.getOrdinate(i).floatValue(); final float fb = b.getOrdinate(i).floatValue(); s += (fa - fb) * (fa - fb); } return s; }
/** * Determines if a point is contained within a given k-dimensional bounding * box. */ static final boolean isContained( Coordinate point, Coordinate lower, Coordinate upper) { int dimensions; double ordinate1, ordinate2, ordinate3; dimensions = point.getDimensions(); for (int i = 0; i < dimensions; ++i) { ordinate1 = point.getOrdinate(i).doubleValue(); ordinate2 = lower.getOrdinate(i).doubleValue(); ordinate3 = upper.getOrdinate(i).doubleValue(); if (ordinate1 < ordinate2 || ordinate1 > ordinate3) return false; } return true; }
/** * Determines if a point is contained within a given k-dimensional bounding * box. */ static final boolean isContained( Coordinate point, Coordinate lower, Coordinate upper) { int dimensions; double ordinate1, ordinate2, ordinate3; dimensions = point.getDimensions(); for (int i = 0; i < dimensions; ++i) { ordinate1 = point.getOrdinate(i).doubleValue(); ordinate2 = lower.getOrdinate(i).doubleValue(); ordinate3 = upper.getOrdinate(i).doubleValue(); if (ordinate1 < ordinate2 || ordinate1 > ordinate3) return false; } return true; }
private Stack<KDNode<T>> walkdown(Coordinate point) { if (_root == null) return null; else { final Stack<KDNode<T>> stack = new Stack<KDNode<T>>(); int discriminate, dimensions; KDNode<T> curNode, tmpNode; double ordinate1, ordinate2; curNode = _root; do { tmpNode = curNode; stack.push(tmpNode); if (tmpNode._point == point) return stack; discriminate = tmpNode._discriminate; ordinate1 = point.getOrdinate(discriminate).doubleValue(); ordinate2 = tmpNode._point.getOrdinate(discriminate).doubleValue(); if (ordinate1 > ordinate2) curNode = tmpNode._right; else curNode = tmpNode._left; } while (curNode != null); dimensions = point.getDimensions(); if (++discriminate >= dimensions) discriminate = 0; return stack; } }
private Stack<KDNode<T>> walkdown(Coordinate point) { if (_root == null) return null; else { final Stack<KDNode<T>> stack = new Stack<KDNode<T>>(); int discriminate, dimensions; KDNode<T> curNode, tmpNode; double ordinate1, ordinate2; curNode = _root; do { tmpNode = curNode; stack.push(tmpNode); if (tmpNode._point == point) return stack; discriminate = tmpNode._discriminate; ordinate1 = point.getOrdinate(discriminate).doubleValue(); ordinate2 = tmpNode._point.getOrdinate(discriminate).doubleValue(); if (ordinate1 > ordinate2) curNode = tmpNode._right; else curNode = tmpNode._left; } while (curNode != null); dimensions = point.getDimensions(); if (++discriminate >= dimensions) discriminate = 0; return stack; } }
discriminate = tmpNode._discriminate; ordinate1 = tmpNode._point.getOrdinate(discriminate).doubleValue(); ordinate2 = lowerExtreme.getOrdinate(discriminate).doubleValue(); ordinate2 = upperExtreme.getOrdinate(discriminate).doubleValue();
discriminate = tmpNode._discriminate; ordinate1 = tmpNode._point.getOrdinate(discriminate).doubleValue(); ordinate2 = lowerExtreme.getOrdinate(discriminate).doubleValue(); ordinate2 = upperExtreme.getOrdinate(discriminate).doubleValue();
private void checkSubtree(KDNode<T> node, Coordinate query, NNState state) { if (node == null) return; final float dist = distance(query, node._point); if (dist < state.bestDist) { state.best = node._point; state.bestDist = dist; } if (state.bestDist == 0) return; final float d = node._point.getOrdinate(node._discriminate).floatValue() - query.getOrdinate(node._discriminate).floatValue(); if (d * d > state.bestDist) { // check subtree final double ordinate1 = query.getOrdinate(node._discriminate).doubleValue(); final double ordinate2 = node._point.getOrdinate(node._discriminate).doubleValue(); if (ordinate1 > ordinate2) checkSubtree(node._right, query, state); else checkSubtree(node._left, query, state); } else { checkSubtree(node._left, query, state); checkSubtree(node._right, query, state); } }
private void checkSubtree(KDNode<T> node, Coordinate query, NNState state) { if (node == null) return; final float dist = distance(query, node._point); if (dist < state.bestDist) { state.best = node._point; state.bestDist = dist; } if (state.bestDist == 0) return; final float d = node._point.getOrdinate(node._discriminate).floatValue() - query.getOrdinate(node._discriminate).floatValue(); if (d * d > state.bestDist) { // check subtree final double ordinate1 = query.getOrdinate(node._discriminate).doubleValue(); final double ordinate2 = node._point.getOrdinate(node._discriminate).doubleValue(); if (ordinate1 > ordinate2) checkSubtree(node._right, query, state); else checkSubtree(node._left, query, state); } else { checkSubtree(node._left, query, state); checkSubtree(node._right, query, state); } }
final float d = node._point.getOrdinate(node._discriminate).floatValue() - query.getOrdinate(node._discriminate).floatValue(); if (d * d > state.peek().bestDist) { final double ordinate1 = query.getOrdinate(node._discriminate).doubleValue(); final double ordinate2 = node._point.getOrdinate(node._discriminate).doubleValue();
final float d = node._point.getOrdinate(node._discriminate).floatValue() - query.getOrdinate(node._discriminate).floatValue(); if (d * d > state.peek().bestDist) { final double ordinate1 = query.getOrdinate(node._discriminate).doubleValue(); final double ordinate2 = node._point.getOrdinate(node._discriminate).doubleValue();
discriminate = tmpNode._discriminate; ordinate1 = point.getOrdinate(discriminate).doubleValue(); ordinate2 = tmpNode._point.getOrdinate(discriminate).doubleValue();
discriminate = tmpNode._discriminate; ordinate1 = point.getOrdinate(discriminate).doubleValue(); ordinate2 = tmpNode._point.getOrdinate(discriminate).doubleValue();
double qtk = 1; if (k < 3) qtk = data.get(i).firstObject().getOrdinate(k).doubleValue(); c[k][j] += qtk * data.get(i).secondObject().getOrdinate(j).doubleValue(); final double[] qt = new double[dim + 1]; for (int i = 0; i < dim + 1; i++) { qt[i] = data.get(k).firstObject().getOrdinate(i).doubleValue();
for (int j = 0; j < nitems; j++) { for (int i = 0; i < dim; i++) { qmean[i] += data.get(j).firstObject().getOrdinate(i).doubleValue(); pmean[i] += data.get(j).secondObject().getOrdinate(i).doubleValue(); for (int j = 0; j < dim; j++) { for (int i = 0; i < dim; i++) { M[j][i] += (data.get(k).secondObject().getOrdinate(j).doubleValue() - pmean[j]) * (data.get(k).firstObject().getOrdinate(i).doubleValue() - qmean[i]);