Commit 6aadb3f365990a5a8db8eb773c52bf7370f9e691

Authored by Andreas Specovius
Committed by Jürgen Knödlseder
1 parent d98fb34f

Adapted contains() method to use local coordinate system.

Showing 1 changed file with 8 additions and 13 deletions
src/sky/GSkyRegionRect.cpp
... ... @@ -555,30 +555,25 @@ std::string GSkyRegionRect::print(const GChatter& chatter) const
555 555 * @param[in] dir Sky direction.
556 556 *
557 557 * A sky direction lies within a region when its distance to the region
558   - * centre is not larger than the region radius.
  558 + * centre is not larger than the region extension in both axes directions.
559 559 ***************************************************************************/
560 560 bool GSkyRegionRect::contains(const GSkyDir& dir) const
561 561 {
562 562 // Initialise return value
563 563 bool dir_is_in = false;
564 564  
565   - // std::cout<<"GSkyRegionRect::contains: (1/2) dec: "<<m_centre.dec_deg()-m_halfheight<<"<="<<dir.dec_deg()<<"<="<<m_centre.dec_deg()+m_halfheight<<std::endl;
  565 + // Compute sky direction in local coordinate system
  566 + GSkyDir local_dir = transform_to_local(dir);
566 567  
567   - // Check dec axis
568   - if ((dir.dec_deg()<=(m_centre.dec_deg() + m_halfheight)) &&
569   - (dir.dec_deg()>=(m_centre.dec_deg() - m_halfheight))) {
  568 + // Check containment: declination axis
  569 + if (std::abs(local_dir.dec_deg()) <= m_halfheight) {
570 570  
571   - // Compute width scaled for declination of queried skydir
572   - double scale = std::cos(dir.dec());
573   - double half_width_scaled = m_halfwidth/scale;
  571 + // Check containment: right ascension axis
  572 + if (std::abs(local_dir.ra_deg()) <= m_halfwidth) {
574 573  
575   - // Check ra axis
576   - if ((dir.ra_deg()<=(m_centre.ra_deg() + half_width_scaled)) &&
577   - (dir.ra_deg()>=(m_centre.ra_deg() - half_width_scaled))) {
  574 + // Sky direction is inside the rectangle
578 575 dir_is_in = true;
579 576 }
580   -
581   - // std::cout<<"GSkyRegionRect::contains: (2/2) ra: "<<m_centre.ra_deg()-half_width_scaled<<"<="<<dir.ra_deg()<<"<="<<m_centre.ra_deg()+half_width_scaled<<std::endl;
582 577 }
583 578  
584 579 // Return bool
... ...