QGIS API Documentation  3.26.3-Buenos Aires (65e4edfdad)
qgsvector.cpp
Go to the documentation of this file.
1 /***************************************************************************
2  qgsvector.cpp - QgsVector
3 
4  ---------------------
5  begin : 24.2.2017
6  copyright : (C) 2017 by Matthias Kuhn
7  email : [email protected]
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 QgsVector QgsVector::rotateBy( double rot ) const
22 {
23  const double angle = std::atan2( mY, mX ) + rot;
24  const double len = length();
25  return QgsVector( len * std::cos( angle ), len * std::sin( angle ) );
26 }
27 
29 {
30  const double len = length();
31 
32  if ( len == 0.0 )
33  {
34  throw QgsException( QStringLiteral( "normalized vector of null vector undefined" ) );
35  }
36 
37  return *this / len;
38 }
QgsException
Defines a QGIS exception class.
Definition: qgsexception.h:34
QgsVector::angle
double angle() const SIP_HOLDGIL
Returns the angle of the vector in radians.
Definition: qgsvector.h:186
QgsVector::rotateBy
QgsVector rotateBy(double rot) const SIP_HOLDGIL
Rotates the vector by a specified angle.
Definition: qgsvector.cpp:21
qgis.h
QgsVector::QgsVector
QgsVector()=default
Default constructor for QgsVector.
QgsVector::normalized
QgsVector normalized() const SIP_THROW(QgsException)
Returns the vector's normalized (or "unit") vector (ie same angle but length of 1....
Definition: qgsvector.cpp:28
qgsvector.h
QgsVector::length
double length() const SIP_HOLDGIL
Returns the length of the vector.
Definition: qgsvector.h:142
QgsVector
A class to represent a vector. Currently no Z axis / 2.5D support is implemented.
Definition: qgsvector.h:29
qgsexception.h