fork(1) download
  1. template<class T>
  2. class Point2d
  3. {
  4. public:
  5. Point2d( void )
  6. : x( (T)0 )
  7. , y( (T)0 )
  8. { }
  9.  
  10. Point2d( T px, T py )
  11. : x( px )
  12. , y( py )
  13. { }
  14.  
  15. Point2d<T> operator=( const Point2d& p )
  16. {
  17. if ( *this == p ) return *this;
  18.  
  19. x = p.x;
  20. y = p.y;
  21.  
  22. return *this;
  23. }
  24.  
  25. Point2d<T>& operator*( T m )
  26. {
  27. return Point2d<T>( x * m, y * m );
  28. }
  29.  
  30. Point2d<T>& operator*( const Point2d& m )
  31. {
  32. return Point2d<T>( x * m.x, y * m.y );
  33. }
  34.  
  35. Point2d<T>& operator*=( T m )
  36. {
  37. x *= m;
  38. y *= m;
  39. return *this;
  40. }
  41.  
  42. Point2d<T>& operator*=( const Point2d& m )
  43. {
  44. x *= m.x;
  45. y *= m.y;
  46. return *this;
  47. }
  48.  
  49. Point2d<T>& operator/( T d )
  50. {
  51. return Point2d<T>( x / d, y / d );
  52. }
  53.  
  54. Point2d<T>& operator/( const Point2d& d )
  55. {
  56. return Point2d<T>( x / d.x, y / d.y );
  57. }
  58.  
  59. Point2d<T>& operator/=( T d )
  60. {
  61. x /= d;
  62. y /= d;
  63. return *this;
  64. }
  65.  
  66. Point2d<T>& operator/=( const Point2d& d )
  67. {
  68. x /= d.x;
  69. y /= d.y;
  70. return *this;
  71. }
  72.  
  73. Point2d<T>& operator +( const Point2d& v )
  74. {
  75. return Point2d<T>( x + (T)v.x, y + (T)v.y );
  76. }
  77.  
  78. Point2d<T>& operator+=( const Point2d& v )
  79. {
  80. x += v.x;
  81. y += v.y;
  82. return *this;
  83. }
  84.  
  85. Point2d<T>& operator -( const Point2d& v )
  86. {
  87. return Point2d<T>( x - v.x, y - v.y );
  88. }
  89.  
  90. Point2d<T>& operator-=( const Point2d& v )
  91. {
  92. x -= v.x;
  93. y -= v.y;
  94. return *this;
  95. }
  96.  
  97. bool operator==( const Point2d& v )
  98. {
  99. return (x == v.x) && (y == v.y);
  100. }
  101.  
  102. float Dot( Point2d<T> p )
  103. {
  104. return ((float)p.x*(float)x) + ((float)p.y*(float)y);
  105. }
  106.  
  107. union {
  108. struct {
  109. T x, y;
  110. };
  111. struct {
  112. T width, height;
  113. };
  114. T component[2];
  115. };
  116. };
  117. typedef Point2d<float> Point2f;
  118.  
  119. int main()
  120. {
  121. Point2f test( 10.0f, -1.0f );
  122. float result = test.Dot( Point2f( 5.0f, 2.0f ) );
  123. return 0;
  124. }
Success #stdin #stdout 0s 2892KB
stdin
Standard input is empty
stdout
Standard output is empty