32const double epsilon = DBL_EPSILON;
38 KisVector2D( double x, double y);
39 KisVector2D( const TQPoint& p);
44 double length() const;
51 KisVector2D &normalize();
52 double dotProduct( const KisVector2D &) const;
54 KisVector2D &operator+=( const KisVector2D &);
55 KisVector2D &operator-=( const KisVector2D &);
56 KisVector2D &operator*=( int);
57 KisVector2D &operator*=( long);
58 KisVector2D &operator*=( double);
59 KisVector2D &operator/=( int);
60 KisVector2D &operator/=( long);
61 KisVector2D &operator/=( double);
63 friend inline bool operator==( const KisVector2D &, const KisVector2D &);
64 friend inline bool operator!=( const KisVector2D &, const KisVector2D &);
65 friend inline KisVector2D operator+( const KisVector2D &, const KisVector2D &);
66 friend inline KisVector2D operator-( const KisVector2D &, const KisVector2D &);
67 friend inline KisVector2D operator*( const KisVector2D &, int);
68 friend inline KisVector2D operator*( int, const KisVector2D &);
69 friend inline KisVector2D operator*( const KisVector2D &, long);
70 friend inline KisVector2D operator*( long, const KisVector2D &);
71 friend inline KisVector2D operator*( const KisVector2D &, double);
72 friend inline KisVector2D operator*( double, const KisVector2D &);
73 friend inline KisVector2D operator-( const KisVector2D &);
74 friend inline KisVector2D operator/( const KisVector2D &, int);
75 friend inline KisVector2D operator/( const KisVector2D &, long);
76 friend inline KisVector2D operator/( const KisVector2D &, double);
85inline KisVector2D::KisVector2D()
88inline KisVector2D::KisVector2D( double x, double y)
91inline KisVector2D::KisVector2D( const TQPoint& p)
96inline KisVector2D::KisVector2D( const KisPoint& p)
101inline bool KisVector2D::isNull() const
102{ return fabs(m_x) < epsilon && fabs(m_y) < epsilon; }
104inline double KisVector2D::length() const
105{ return (sqrt(m_x*m_x + m_y*m_y)); }
107inline double KisVector2D::dotProduct( const KisVector2D &v) const
108{ return m_x*v.m_x + m_y*v.m_y; }
110inline double KisVector2D::x() const
113inline double KisVector2D::y() const
116inline void KisVector2D::setX( double x)
119inline void KisVector2D::setY( double y)
122inline KisVector2D &KisVector2D::operator+=( const KisVector2D &v)
123{ m_x+=v.m_x; m_y+=v.m_y; return * this; }
125inline KisVector2D &KisVector2D::operator-=( const KisVector2D &v)
126{ m_x-=v.m_x; m_y-=v.m_y; return * this; }
128inline KisVector2D &KisVector2D::operator*=( int c)
129{ m_x*=c; m_y*=c; return * this; }
131inline KisVector2D &KisVector2D::operator*=( long c)
132{ m_x*=c; m_y*=c; return * this; }
134inline KisVector2D &KisVector2D::operator*=( double c)
135{ m_x*=c; m_y*=c; return * this; }
137inline bool operator==( const KisVector2D &v1, const KisVector2D &v2)
138{ return fabs(v1.m_x - v2.m_x) < epsilon && fabs(v1.m_y - v2.m_y) < epsilon; }
140inline bool operator!=( const KisVector2D &v1, const KisVector2D &v2)
141{ return !(v1 == v2); }
143inline KisVector2D operator+( const KisVector2D &v1, const KisVector2D &v2)
144{ return KisVector2D(v1.m_x+v2.m_x, v1.m_y+v2.m_y); }
146inline KisVector2D operator-( const KisVector2D &v1, const KisVector2D &v2)
147{ return KisVector2D(v1.m_x-v2.m_x, v1.m_y-v2.m_y); }
149inline KisVector2D operator*( const KisVector2D &v, int c)
150{ return KisVector2D((v.m_x*c), (v.m_y*c)); }
152inline KisVector2D operator*( int c, const KisVector2D &v)
153{ return KisVector2D((v.m_x*c), (v.m_y*c)); }
155inline KisVector2D operator*( const KisVector2D &v, long c)
156{ return KisVector2D((v.m_x*c), (v.m_y*c)); }
158inline KisVector2D operator*( long c, const KisVector2D &v)
159{ return KisVector2D((v.m_x*c), (v.m_y*c)); }
161inline KisVector2D operator*( const KisVector2D &v, double c)
162{ return KisVector2D(v.m_x*c, v.m_y*c); }
164inline KisVector2D operator*( double c, const KisVector2D &v)
165{ return KisVector2D(v.m_x*c, v.m_y*c); }
167inline KisVector2D operator-( const KisVector2D &v)
168{ return KisVector2D(-v.m_x, -v.m_y); }
170inline KisVector2D operator/( const KisVector2D &v, int c)
173 return KisVector2D(v.x() / c, v.y() / c);
179inline KisVector2D operator/( const KisVector2D &v, long c)
182 return KisVector2D(v.x() / c, v.y() / c);
188inline KisVector2D operator/( const KisVector2D &v, double c)
190 if (c > DBL_EPSILON || c < -DBL_EPSILON) {
191 return KisVector2D(v.x() / c, v.y() / c);
197inline KisVector2D &KisVector2D::operator/=( int c)
207inline KisVector2D &KisVector2D::operator/=( long c)
217inline KisVector2D &KisVector2D::operator/=( double c)
227inline KisPoint KisVector2D::toKisPoint() const
236 KisVector3D( double x, double y, double z = 0);
237 KisVector3D( int x, int y, int z = 0);
238 KisVector3D( long x, long y, long z = 0);
242 double length() const;
251 KisVector3D &normalize();
252 KisVector3D &crossProduct( const KisVector3D &);
253 double dotProduct( const KisVector3D &) const;
255 KisVector3D &operator+=( const KisVector3D &);
256 KisVector3D &operator-=( const KisVector3D &);
257 KisVector3D &operator*=( int);
258 KisVector3D &operator*=( long);
259 KisVector3D &operator*=( double);
260 KisVector3D &operator/=( int);
261 KisVector3D &operator/=( long);
262 KisVector3D &operator/=( double);
264 friend inline bool operator==( const KisVector3D &, const KisVector3D &);
265 friend inline bool operator!=( const KisVector3D &, const KisVector3D &);
266 friend inline KisVector3D operator+( const KisVector3D &, const KisVector3D &);
267 friend inline KisVector3D operator-( const KisVector3D &, const KisVector3D &);
268 friend inline KisVector3D operator*( const KisVector3D &, int);
269 friend inline KisVector3D operator*( int, const KisVector3D &);
270 friend inline KisVector3D operator*( const KisVector3D &, long);
271 friend inline KisVector3D operator*( long, const KisVector3D &);
272 friend inline KisVector3D operator*( const KisVector3D &, double);
273 friend inline KisVector3D operator*( double, const KisVector3D &);
274 friend inline KisVector3D operator-( const KisVector3D &);
275 friend inline KisVector3D operator/( const KisVector3D &, int);
276 friend inline KisVector3D operator/( const KisVector3D &, long);
277 friend inline KisVector3D operator/( const KisVector3D &, double);
285inline KisVector3D::KisVector3D()
286{ m_x=0; m_y=0; m_z=0; }
288inline KisVector3D::KisVector3D( double x, double y, double z)
289{ m_x=x; m_y=y; m_z=z; }
291inline KisVector3D::KisVector3D( int x, int y, int z)
292{ m_x= static_cast<double>(x); m_y= static_cast<double>(y); m_z= static_cast<double>(z); }
294inline KisVector3D::KisVector3D( long x, long y, long z)
295{ m_x= static_cast<double>(x); m_y= static_cast<double>(y); m_z= static_cast<double>(z); }
297inline bool KisVector3D::isNull() const
298{ return fabs(m_x) < epsilon && fabs(m_y) < epsilon && fabs(m_z) < epsilon; }
300inline double KisVector3D::length() const
301{ return (sqrt(m_x*m_x + m_y*m_y + m_z*m_z)); }
303inline double KisVector3D::dotProduct( const KisVector3D &v) const
304{ return m_x*v.m_x + m_y*v.m_y + m_z*v.m_z; }
306inline double KisVector3D::x() const
309inline double KisVector3D::y() const
312inline double KisVector3D::z() const
315inline void KisVector3D::setX( double x)
318inline void KisVector3D::setY( double y)
321inline void KisVector3D::setZ( double z)
324inline KisVector3D &KisVector3D::operator+=( const KisVector3D &v)
325{ m_x+=v.m_x; m_y+=v.m_y; m_z+=v.m_z; return * this; }
327inline KisVector3D &KisVector3D::operator-=( const KisVector3D &v)
328{ m_x-=v.m_x; m_y-=v.m_y; m_z-=v.m_z; return * this; }
330inline KisVector3D &KisVector3D::operator*=( int c)
331{ m_x*=c; m_y*=c; m_z*=c; return * this; }
333inline KisVector3D &KisVector3D::operator*=( long c)
334{ m_x*=c; m_y*=c; m_z*=c; return * this; }
336inline KisVector3D &KisVector3D::operator*=( double c)
337{ m_x*=c; m_y*=c; m_z*=c; return * this; }
339inline bool operator==( const KisVector3D &v1, const KisVector3D &v2)
340{ return fabs(v1.m_x - v2.m_x) < epsilon && fabs(v1.m_y - v2.m_y) < epsilon && fabs(v1.m_z - v2.m_z) < epsilon; }
342inline bool operator!=( const KisVector3D &v1, const KisVector3D &v2)
343{ return !(v1 == v2); }
345inline KisVector3D operator+( const KisVector3D &v1, const KisVector3D &v2)
346{ return KisVector3D(v1.m_x+v2.m_x, v1.m_y+v2.m_y, v1.m_z+v2.m_z); }
348inline KisVector3D operator-( const KisVector3D &v1, const KisVector3D &v2)
349{ return KisVector3D(v1.m_x-v2.m_x, v1.m_y-v2.m_y, v1.m_z-v2.m_z); }
351inline KisVector3D operator*( const KisVector3D &v, int c)
352{ return KisVector3D((v.m_x*c), (v.m_y*c), (v.m_z*c)); }
354inline KisVector3D operator*( int c, const KisVector3D &v)
355{ return KisVector3D((v.m_x*c), (v.m_y*c), (v.m_z*c)); }
357inline KisVector3D operator*( const KisVector3D &v, long c)
358{ return KisVector3D((v.m_x*c), (v.m_y*c), (v.m_z*c)); }
360inline KisVector3D operator*( long c, const KisVector3D &v)
361{ return KisVector3D((v.m_x*c), (v.m_y*c), (v.m_z*c)); }
363inline KisVector3D operator*( const KisVector3D &v, double c)
364{ return KisVector3D(v.m_x*c, v.m_y*c, v.m_z*c); }
366inline KisVector3D operator*( double c, const KisVector3D &v)
367{ return KisVector3D(v.m_x*c, v.m_y*c, v.m_z*c); }
369inline KisVector3D operator-( const KisVector3D &v)
370{ return KisVector3D(-v.m_x, -v.m_y, -v.m_z); }
372inline KisVector3D &KisVector3D::operator/=( int c)
383inline KisVector3D &KisVector3D::operator/=( long c)
394inline KisVector3D &KisVector3D::operator/=( double c)
A double-based point class that can return it's coordinates approximated to integers.
|