april  1.0.0
...
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
p2d.h
Go to the documentation of this file.
1 /* ========================================================================= */
2 /* ------------------------------------------------------------------------- *//*
12 
13 
14  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
15  Please read COPYING and README files in root folder
16  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
17 */
18 /* ------------------------------------------------------------------------- */
19 /* ========================================================================= */
20 #ifndef __P2D_INC__
21 #define __P2D_INC__
22 //
23 //
24 //
25 //
26 /* INCLUDES ------------------------------------------------------------ */
27 
28 #include "geometry.h"
29 
30 /* INCLUDES ============================================================ */
31 //
32 //
33 //
34 //
35 /* CLASS --------------------------------------------------------------- */
36 
79 struct P2D {
80 
81  //
82  //
83  //
84  //
85  /* DEFINITIONS ----------------------------------------------------- */
86 
87  /* DEFINITIONS ===================================================== */
88  //
89  //
90  //
91  //
92  /* DATA ------------------------------------------------------------ */
93 
94  union {
99 
100 
101  struct {
102 
103 
108 
109 
114  };
115 
116  };
117 
118 
119 
120  /* DATA ============================================================ */
121  //
122  //
123  //
124  //
125  /* FUNCTIONS ------------------------------------------------------- */
126 
127 public:
128 
129 
133  inline void reset ( void )
134  { x_ = 0; y_ = 0; }
135 
136 
140  inline bool operator == ( const P2D & other ) const
141  {
142  // qDebug() << qAbs( x_ - other.x_ );
143  // qDebug() << qAbs( y_ - other.y_ );
144  return ( ( COORDV_EQ( x_, other.x_ ) ) &&
145  ( COORDV_EQ( y_, other.y_ ) ) );
146  }
147 
148 
152  inline bool operator != ( const P2D & other ) const
153  {
154  return !( *this == other );
155  }
156 
157 
161  inline void operator += ( const P2D & other )
162  {
163  x_ += other.x_;
164  y_ += other.y_;
165  }
166 
167 
171  inline void operator -= ( const P2D & other )
172  {
173  x_ -= other.x_;
174  y_ -= other.y_;
175  }
176 
177 
181  inline COORDV r ( void )const
182  {
183  return COORDV_SQR( x_ * x_ + y_ * y_ ); }
184 
185 
189  inline COORDV dist ( const P2D & other ) const
190  {
191  COORDV dx = other.x_ - x_;
192  COORDV dy = other.y_ - y_;
193  return COORDV_SQR( dx * dx + dy * dy );
194  }
195 
196 
200  inline COORDV magnitude ( void ) const
201  {
202  return COORDV_SQR( x_ * x_ + y_ * y_ );
203  }
204 
205 
209  inline COORDV distSq ( const P2D & other ) const
210  {
211  COORDV dx = other.x_ - x_;
212  COORDV dy = other.y_ - y_;
213  return dx * dx + dy * dy;
214  }
215 
219  void translate (
220  COORDV dx,
221  COORDV dy
222  )
223  { x_ += dx; y_ += dy; }
224 
225 
226  /* FUNCTIONS ======================================================= */
227  //
228  //
229  //
230  //
231 
232 }; /* struct P2D */
233 
237 inline P2D operator + ( const P2D & first, const P2D & second )
238 {
239  P2D res;
240  res.x_ = first.x_ + second.x_;
241  res.y_ = first.y_ + second.y_;
242  return res;
243 }
244 
248 inline P2D operator - ( const P2D & first, const P2D & second )
249 {
250  P2D res;
251  res.x_ = second.x_ - first.x_;
252  res.y_ = second.y_ - first.y_;
253  return res;
254 }
255 
256 
257 /* CLASS =============================================================== */
258 //
259 //
260 //
261 //
262 #endif // __P2D_INC__
263 /* ------------------------------------------------------------------------- */
264 /* ========================================================================= */