// ==========================================================================
// $Id: point2d.cpp,v 1.1 2011/10/19 03:24:40 jlang Exp $
// CSI2372 example Code for lecture 4
// ==========================================================================
// (C)opyright:
//
//   Jochen Lang
//   SITE, University of Ottawa
//   800 King Edward Ave.
//   Ottawa, On., K1N 6N5
//   Canada. 
//   http://www.site.uottawa.ca
// 
// Creator: jlang (Jochen Lang)
// Email:   jlang@site.uottawa.ca
// ==========================================================================
// $Log: point2d.cpp,v $
// Revision 1.1  2011/10/19 03:24:40  jlang
// Added code for lecture 7
//
// ==========================================================================
#include <iostream>
#include "point2d.h"


/**
 * Point2D - All in-one constructor
 */
Point2D::Point2D( double _x, double _y ) : d_x(_x), d_y(_y) 
{}


/**
 * Convenience printing method
 */
void Point2D::print() const {
  std::cout << "( " << d_x << ", " << d_y << " )";
  return;
}


/**
 * Compare a "point" coordinate-wise to this point and return minimum
 * coordinates
 */
Point2D Point2D::min( const Point2D& _oPoint ) const {
  Point2D res;
  res.d_x = (d_x < _oPoint.d_x)?d_x:_oPoint.d_x;
  res.d_y = (d_y < _oPoint.d_y)?d_y:_oPoint.d_y;
  return res;
}

/**
 * Compare a "point" coordinate-wise to this point and return maximum
 * coordinates
 */
Point2D Point2D::max( const Point2D& _oPoint ) const {
  Point2D res;
  res.d_x = (d_x > _oPoint.d_x)?d_x:_oPoint.d_x;
  res.d_y = (d_y > _oPoint.d_y)?d_y:_oPoint.d_y;
  return res;
}

/**
 * Return true if current point has smaller coordinates than other
 * point
 */
bool Point2D::isSmaller( const Point2D& _oPoint ) const {
  if ( d_x < _oPoint.d_x && d_y < _oPoint.d_y ) {
    return true;
  } else {
    return false;
  }
}

/**
 * Return true if current point has larger coordinates than other
 * point
 */
bool Point2D::isGreater( const Point2D& _oPoint ) const {
  if ( d_x > _oPoint.d_x && d_y > _oPoint.d_y ) {
    return true;
  } else {
    return false;
  }
}

double Point2D::getX() {
  return d_x;
}

double Point2D::getY() {
  return d_y;
}



