Skip to Content

algèbre_vect_PyQGIS.py

  1. #!/usr/bin/python
  2. # encoding: utf-8
  3. """
  4. QGIS: fonctions d'algèbre vectorielle.
  5. Martin Laloux 2012
  6. """
  7. import math
  8. from qgis.core import *
  9.  
  10. def mag(point):
  11. #magnitude d'un vecteur
  12. return math.sqrt(point.x()**2 + point.y()**2)
  13.  
  14. def dist(point1,point2):
  15. #PyQGIS: distance euclidienne entre 2 points#
  16. return math.sqrt(point1.sqrDist(point2))
  17.  
  18. def diff(point2, point1):
  19. # soustraction de 2 vecteurs
  20. return QgsPoint(point2.x()-point1.x(), point2.y() - point1.y())
  21.  
  22. def som(point2,point1):
  23. # addition entre 2 vecteurs
  24. return QgsPoint(point2.x()+point1.x(), point2.y()+point1.y())
  25.  
  26. def som_k(point, dx,dy):
  27. # translation d'un vecteur de dx, dy unités
  28. return QgsPoint(point.x()+dx, point.y()+dy)
  29.  
  30. def vecxscal(point,k):
  31. # multiplication d'un vecteur par un scalaire
  32. return QgsPoint(point.x()*k, point.y()*k)
  33.  
  34. def norm(point1, point2):
  35. # normalisation d'un vecteur
  36. point = diff(point2,point1)
  37. m = mag(point)
  38. return QgsPoint(point.x()/m, point.y()/m)
  39.  
  40. def normpt(point):
  41. # normalisation d'un vecteur point
  42. m = mag(point)
  43. return QgsPoint(point.x()/m, point.y()/m)
  44.  
  45. def dot_product(point1, point2):
  46. # produit scalaire de 2 vecteurs
  47. return (point1.x()*point2.x() + point1.y()*point2.y())
  48.  
  49. def det(point1, point2):
  50. # déterminant de 2 vecteurs
  51. return (point1.x*point2.y) - (point1.y*point2.x)
  52.  
  53. def car_pol(point):
  54. # cordonnées cartésiennes -> coordonnées polaires
  55. return mag(point),90 - azimut_pt(point)
  56.  
  57. def pol_car(dist, angle):
  58. # coordonnées polaire -> coordonnées polaires
  59. return QgsPoint(dist * math.cos(math.radians(angle)),dist * math.sin(math.radians(angle)))
  60.  
  61. def cosdir(point):
  62. # cosinus directeurs d'un vecteur point(x,y)
  63. cosa = point.x() / mag(point)
  64. cosb = point.y()/ mag(point)
  65. return cosa,cosb
  66.  
  67. def cosdir_azim(azim):
  68. # cosinus directeurs d'un azimut en degrés
  69. az = math.radians(azim)
  70. cosa = math.sin(az)
  71. cosb = math.cos(az)
  72. return cosa,cosb