From: Martin D. <mar...@ge...> - 2007-05-15 14:38:52
|
Graham Davis a écrit : > public boolean equals(Object o) { > if (o instanceof DirectPosition || o instanceof DirectPositionImpl) > return this.equals((DirectPosition) o, 0); > else > return false; > } Note: the "|| o instanceof DirectPositionImpl" is useless. I suggest to remove it. > /** > * Compares coodinates of Direct Positions and allows a tolerance value in > * the comparison. Implementation Note: Parameter has to be of Type > * DirectPosition (not DirectPositionImpl), so that the equals method is > * found for DirectPosition´s and DirectPositionImpl´s I suggest to remove the implementation note: it is normal interface programming and don't really bring info as far as I can see... > public boolean equals(DirectPosition position, double tol) { > int D = position.getDimension(); > if( D != getDimension() ) return false; > for (int i = 0; i < D; ++i) { > if (Math.abs(DoubleOperation.subtract(position.getOrdinate(i), this.coordinate[i])) > tol) > return false; > } > return true; > } What is DoubleOperation? What are its advantage compared to the usual '-' operator? position.getOrdinate(i) returns double value anyway, and Math.abs(double) expect a double anyway. Additional note: I suggest to replace: if (abs(position.getOrdinate(i) - this.getOrdinate(i)) > tol) by if (!(abs(position.getOrdinate(i) - this.getOrdinate(i))) <= tol) Purpose: consider positions as different if at least one ordinate is Double.NaN. Martin |