// ========================================================================== // $Id: vector2d.cpp,v 1.1 2011/10/19 03:24:41 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: vector2d.cpp,v $ // Revision 1.1 2011/10/19 03:24:41 jlang // Added code for lecture 7 // // Revision 1.1 2011/10/16 02:51:42 jlang // Added files for lecture 06 // // ========================================================================== #include #include #include "vector2d.h" Vector2D::Vector2D(double _x, double _y) : Point2D(_x,_y) { d_length = std::sqrt(dot(*this)); } Vector2D::Vector2D(const Point2D& _pt) : Point2D(_pt) { d_length = std::sqrt(dot(*this)); } /** * Dot product between two vectors */ double Vector2D::dot( const Vector2D& _oVect ) const { return d_x * _oVect.d_x + d_y * _oVect.d_y; } /** * Add a vector to this vector and return result */ Vector2D Vector2D::add( const Vector2D& _oVector ) const { return Vector2D(d_x + _oVector.d_x, d_y + _oVector.d_y); } /** * Subtract a vector from this vector and return result */ Vector2D Vector2D::subtract( const Vector2D& _oVector ) const { return Vector2D(d_x - _oVector.d_x, d_y - _oVector.d_y); } Vector2D Vector2D::scale( double _scaling ) const { return Vector2D(_scaling*d_x, _scaling*d_y); } /** * Return the vector normalized */ Vector2D Vector2D::normalize() const { if (d_length>1e-39) return Vector2D(d_x/d_length, d_y/d_length); else return *this; } double Vector2D::getLength() const { return d_length; }