Branch data Line data Source code
1 : : /*************************************************************************** 2 : : qgsvector.cpp - QgsVector 3 : : 4 : : --------------------- 5 : : begin : 24.2.2017 6 : : copyright : (C) 2017 by Matthias Kuhn 7 : : email : matthias@opengis.ch 8 : : *************************************************************************** 9 : : * * 10 : : * This program is free software; you can redistribute it and/or modify * 11 : : * it under the terms of the GNU General Public License as published by * 12 : : * the Free Software Foundation; either version 2 of the License, or * 13 : : * (at your option) any later version. * 14 : : * * 15 : : ***************************************************************************/ 16 : : 17 : : #include "qgsvector.h" 18 : : #include "qgis.h" 19 : : #include "qgsexception.h" 20 : : 21 : 0 : QgsVector QgsVector::rotateBy( double rot ) const 22 : : { 23 : 0 : double angle = std::atan2( mY, mX ) + rot; 24 : 0 : double len = length(); 25 : 0 : return QgsVector( len * std::cos( angle ), len * std::sin( angle ) ); 26 : : } 27 : : 28 : 401 : QgsVector QgsVector::normalized() const 29 : : { 30 : 401 : double len = length(); 31 : : 32 : 401 : if ( len == 0.0 ) 33 : : { 34 : 8 : throw QgsException( QStringLiteral( "normalized vector of null vector undefined" ) ); 35 : : } 36 : : 37 : 397 : return *this / len; 38 : 4 : }