@Override public boolean equals( final Object obj ) { return obj instanceof SuperEllipsoid && SuperEllipsoid.equals( this, ( SuperEllipsoid ) obj ); }
@Override public int hashCode() { return SuperEllipsoid.hashCode( this ); }
/** * Computes a hash code for a superellipsoid. The hash code value is based * on the superellipsoid's position, semi-axis lengths, exponent and * boundary type. * * @param ellipsoid * The superellipsoid for which to compute the hash code. * @return Hash code of the superellipsoid. */ static int hashCode( final SuperEllipsoid ellipsoid ) { int result = 22; for ( int i = 0; i < ellipsoid.numDimensions(); i++ ) result += 13 * ellipsoid.center().getDoublePosition( i ) + 13 * ellipsoid.semiAxisLength( i ); result += ellipsoid.exponent(); if ( ellipsoid.boundaryType() == BoundaryType.CLOSED ) result += 5; else if ( ellipsoid.boundaryType() == BoundaryType.OPEN ) result += 8; return result; }
/** * Determines whether two superellipsoid describe the same region. * <p> * Two superellipsoids are equal iff they have the same dimensionality, * boundary type, exponent, semi-axis lengths and positions. * </p> * * @param ellipsoid1 * The first superellipsoid to compare. * @param ellipsoid2 * The second superellipsoid to compare. * @return True iff the superellipsoids describe the same region. */ static boolean equals( final SuperEllipsoid ellipsoid1, final SuperEllipsoid ellipsoid2 ) { if ( ellipsoid1 == null && ellipsoid2 == null ) return true; if ( ellipsoid1 == null || ellipsoid2 == null || !Masks.sameTypesAndDimensions( ellipsoid1, ellipsoid2 ) || // ellipsoid1.exponent() != ellipsoid2.exponent() ) return false; for ( int d = 0; d < ellipsoid1.numDimensions(); d++ ) if ( ellipsoid1.semiAxisLength( d ) != ellipsoid2.semiAxisLength( d ) ) return false; return Util.locationsEqual( ellipsoid1.center(), ellipsoid2.center() ); } }
@Override public boolean equals( final Object obj ) { return obj instanceof SuperEllipsoid && SuperEllipsoid.equals( this, ( SuperEllipsoid ) obj ); }
@Override public int hashCode() { return SuperEllipsoid.hashCode( this ); }
@Override public boolean equals(final Object obj) { return obj instanceof SuperEllipsoid && SuperEllipsoid.equals(this, (SuperEllipsoid) obj); }
@Override public int hashCode() { return SuperEllipsoid.hashCode(this); }