vector2d.cpp
上传用户:chinasdcnc
上传日期:2022-07-02
资源大小:2702k
文件大小:2k
源码类别:

分形几何

开发平台:

Visual C++

  1. //
  2. // Delaunay Triangulation
  3. //
  4. // Homework of CG lesson (Fall 2009) in Tsinghua University.
  5. // All rights reserved.
  6. //
  7. // temp include, delete later if necessary
  8. #include "stdafx.h"
  9. #include "vector2d.h"
  10. // C++ headers
  11. #include <cmath>
  12. Vector2d::Vector2d(void)
  13.     :x(0), y(0)
  14. {
  15. }
  16. Vector2d::Vector2d(double tx, double ty)
  17.     :x(tx), y(ty)
  18. {
  19. }
  20. Vector2d::Vector2d(const Vector2d& vect)
  21. {
  22.     x = vect.x;
  23.     y = vect.y;
  24. }
  25. double Vector2d::norm(void) const
  26. {
  27.     return sqrt(x * x + y * y);
  28. }
  29. double Vector2d::squareNorm(void) const
  30. {
  31.     return x * x + y * y;
  32. }
  33. bool Vector2d::normalize(void)
  34. {
  35.     double len = this->norm();
  36.     if (len == 0.0)
  37.     {
  38.         return false;
  39.     }
  40.     else
  41.     {
  42.         x /= len;
  43.         y /= len;
  44.         return true;
  45.     }
  46. }
  47. double Vector2d::dot(const Vector2d& vect)
  48. {
  49.     return (x * vect.x + y * vect.y);
  50. }
  51. Vector2d Vector2d::operator*(double c) const
  52. {
  53.     return Vector2d(c * x, c * y);
  54. }
  55. Vector2d& Vector2d::operator*=(double c)
  56. {
  57.     x *= c;
  58.     y *= c;
  59.     return *this;
  60. }
  61. Vector2d Vector2d::operator+(const Vector2d& vect) const
  62. {
  63.     return Vector2d(x + vect.x, y + vect.y);
  64. }
  65. Vector2d& Vector2d::operator+=(const Vector2d& vect)
  66. {
  67.     x += vect.x;
  68.     y += vect.y;
  69.     return *this;
  70. }
  71. Vector2d Vector2d::operator-(const Vector2d& vect) const
  72. {
  73.     return Vector2d(x - vect.x, y - vect.y);
  74. }
  75. Vector2d& Vector2d::operator-=(const Vector2d& vect)
  76. {
  77.     x -= vect.x;
  78.     y -= vect.y;
  79.     return *this;
  80. }