/* * This file is part of rasdaman community. * * Rasdaman community is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Rasdaman community is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with rasdaman community. If not, see . * * Copyright 2003, 2004, 2005, 2006, 2007, 2008, 2009 Peter Baumann / rasdaman GmbH. * * For more information please see * or contact Peter Baumann via . / /** * INLINE SOURCE: minterval.icc * * MODULE: raslib * CLASS: r_Minterval * * COMMENTS: * */ // -*-C++-*- (for Emacs) #include "raslib/rminit.hh" #include "raslib/error.hh" inline r_Dimension r_Minterval::dimension() const { return dimensionality; } inline const bool r_Minterval::is_origin_fixed() const { bool retval=true; if(!dimensionality) { retval=false; } else { for(r_Dimension i=0; i < dimensionality; i++) retval &= intervals[i].is_low_fixed(); } return retval; } inline const bool r_Minterval::is_high_fixed() const { bool retval=true; if(!dimensionality) { //we have an uninitialized interval retval=false; } else { for(r_Dimension i=0; i < dimensionality; i++) retval &= intervals[i].is_high_fixed(); } return retval; } inline const bool r_Minterval::covers( const r_Point& pnt ) const { bool retval = true; if (dimensionality == pnt.dimension()) { for (r_Dimension i = 0; i < pnt.dimension(); i++) { if ((intervals[i].is_low_fixed() && pnt[i] < intervals[i].low()) || (intervals[i].is_high_fixed() && pnt[i] > intervals[i].high())) { retval = false; break; } } } else { RMInit::logOut << "r_Minterval::covers(" << pnt << ") dimensions do not match" << endl; retval=false; } return retval; } inline const bool r_Minterval::covers( const r_Minterval& inter2 ) const { bool retval = true; if (dimensionality == inter2.dimension()) { for (r_Dimension i = 0; i < dimensionality ; i++) { // first check if i am low fixed and the other isn't: false // both are low fixed // check if i am smaller than the other: false // second check if i am high fixed and the other isn't: false // both are high fixed // check if i am smaller than the other: false if ( (intervals[i].is_low_fixed() && (!(inter2[i].is_low_fixed()) || intervals[i].low() > inter2[i].low())) || (intervals[i].is_high_fixed() && (!(inter2[i].is_high_fixed()) || intervals[i].high() < inter2[i].high())) ) { retval = false; break; } } } else { RMInit::logOut << "r_Minterval::covers(" << inter2 << ") dimensions do not match" << endl; retval=false; } return retval; }