Simple Vector Library 1.5 http://www.cs.cmu.edu/~ajw/doc/svl.html

Committer:
BartJanssens
Date:
Tue Jan 05 13:37:50 2016 +0000
Revision:
1:e25ff4b06ed2
Parent:
0:785cff1e5a7c
fixed va_list bug

Who changed what in which revision?

UserRevisionLine numberNew contents of line
BartJanssens 0:785cff1e5a7c 1 /*
BartJanssens 0:785cff1e5a7c 2 File: Vec2.h
BartJanssens 0:785cff1e5a7c 3
BartJanssens 0:785cff1e5a7c 4 Function: Defines a length-2 vector.
BartJanssens 0:785cff1e5a7c 5
BartJanssens 0:785cff1e5a7c 6 Author(s): Andrew Willmott
BartJanssens 0:785cff1e5a7c 7
BartJanssens 0:785cff1e5a7c 8 Copyright: (c) 1995-2001, Andrew Willmott
BartJanssens 0:785cff1e5a7c 9 */
BartJanssens 0:785cff1e5a7c 10
BartJanssens 0:785cff1e5a7c 11 #ifndef __Vec2__
BartJanssens 0:785cff1e5a7c 12 #define __Vec2__
BartJanssens 0:785cff1e5a7c 13 #include "Constants.h"
BartJanssens 0:785cff1e5a7c 14 #include "Basics.h"
BartJanssens 0:785cff1e5a7c 15
BartJanssens 0:785cff1e5a7c 16 // --- Vec2 Class -------------------------------------------------------------
BartJanssens 0:785cff1e5a7c 17
BartJanssens 0:785cff1e5a7c 18
BartJanssens 0:785cff1e5a7c 19 class Vec2
BartJanssens 0:785cff1e5a7c 20 {
BartJanssens 0:785cff1e5a7c 21 public:
BartJanssens 0:785cff1e5a7c 22
BartJanssens 0:785cff1e5a7c 23 // Constructors
BartJanssens 0:785cff1e5a7c 24
BartJanssens 0:785cff1e5a7c 25 Vec2();
BartJanssens 0:785cff1e5a7c 26 Vec2(double x, double y); // (x, y)
BartJanssens 0:785cff1e5a7c 27 Vec2(const Vec2 &v); // Copy constructor
BartJanssens 0:785cff1e5a7c 28 Vec2(ZeroOrOne k); // v[i] = vl_zero
BartJanssens 0:785cff1e5a7c 29 Vec2(Axis k); // v[k] = 1
BartJanssens 0:785cff1e5a7c 30
BartJanssens 0:785cff1e5a7c 31 // Accessor functions
BartJanssens 0:785cff1e5a7c 32
BartJanssens 0:785cff1e5a7c 33 double &operator [] (Int i);
BartJanssens 0:785cff1e5a7c 34 const double &operator [] (Int i) const;
BartJanssens 0:785cff1e5a7c 35
BartJanssens 0:785cff1e5a7c 36 Int Elts() const { return(2); };
BartJanssens 0:785cff1e5a7c 37 double *Ref() const; // Return ptr to data
BartJanssens 0:785cff1e5a7c 38
BartJanssens 0:785cff1e5a7c 39 // Assignment operators
BartJanssens 0:785cff1e5a7c 40
BartJanssens 0:785cff1e5a7c 41 Vec2 &operator = (const Vec2 &a);
BartJanssens 0:785cff1e5a7c 42 Vec2 &operator = (ZeroOrOne k);
BartJanssens 0:785cff1e5a7c 43 Vec2 &operator = (Axis k);
BartJanssens 0:785cff1e5a7c 44
BartJanssens 0:785cff1e5a7c 45 Vec2 &operator += (const Vec2 &a);
BartJanssens 0:785cff1e5a7c 46 Vec2 &operator -= (const Vec2 &a);
BartJanssens 0:785cff1e5a7c 47 Vec2 &operator *= (const Vec2 &a);
BartJanssens 0:785cff1e5a7c 48 Vec2 &operator *= (double s);
BartJanssens 0:785cff1e5a7c 49 Vec2 &operator /= (const Vec2 &a);
BartJanssens 0:785cff1e5a7c 50 Vec2 &operator /= (double s);
BartJanssens 0:785cff1e5a7c 51
BartJanssens 0:785cff1e5a7c 52 // Comparison operators
BartJanssens 0:785cff1e5a7c 53
BartJanssens 0:785cff1e5a7c 54 bool operator == (const Vec2 &a) const; // v == a?
BartJanssens 0:785cff1e5a7c 55 bool operator != (const Vec2 &a) const; // v != a?
BartJanssens 0:785cff1e5a7c 56
BartJanssens 0:785cff1e5a7c 57 // Arithmetic operators
BartJanssens 0:785cff1e5a7c 58
BartJanssens 0:785cff1e5a7c 59 Vec2 operator + (const Vec2 &a) const; // v + a
BartJanssens 0:785cff1e5a7c 60 Vec2 operator - (const Vec2 &a) const; // v - a
BartJanssens 0:785cff1e5a7c 61 Vec2 operator - () const; // -v
BartJanssens 0:785cff1e5a7c 62 Vec2 operator * (const Vec2 &a) const; // v * a (vx * ax, ...)
BartJanssens 0:785cff1e5a7c 63 Vec2 operator * (double s) const; // v * s
BartJanssens 0:785cff1e5a7c 64 Vec2 operator / (const Vec2 &a) const; // v / a (vx / ax, ...)
BartJanssens 0:785cff1e5a7c 65 Vec2 operator / (double s) const; // v / s
BartJanssens 0:785cff1e5a7c 66
BartJanssens 0:785cff1e5a7c 67 // Initialisers
BartJanssens 0:785cff1e5a7c 68
BartJanssens 0:785cff1e5a7c 69 Vec2 &MakeZero(); // Zero vector
BartJanssens 0:785cff1e5a7c 70 Vec2 &MakeUnit(Int i, double k = vl_one); // I[i]
BartJanssens 0:785cff1e5a7c 71 Vec2 &MakeBlock(double k = vl_one); // All-k vector
BartJanssens 0:785cff1e5a7c 72
BartJanssens 0:785cff1e5a7c 73 Vec2 &Normalise(); // normalise vector
BartJanssens 0:785cff1e5a7c 74
BartJanssens 0:785cff1e5a7c 75 // Private...
BartJanssens 0:785cff1e5a7c 76
BartJanssens 0:785cff1e5a7c 77 protected:
BartJanssens 0:785cff1e5a7c 78
BartJanssens 0:785cff1e5a7c 79 double elt[2];
BartJanssens 0:785cff1e5a7c 80 };
BartJanssens 0:785cff1e5a7c 81
BartJanssens 0:785cff1e5a7c 82
BartJanssens 0:785cff1e5a7c 83 // --- Vec operators ----------------------------------------------------------
BartJanssens 0:785cff1e5a7c 84
BartJanssens 0:785cff1e5a7c 85 inline Vec2 operator * (double s, const Vec2 &v); // s * v
BartJanssens 0:785cff1e5a7c 86 inline double dot(const Vec2 &a, const Vec2 &b); // v . a
BartJanssens 0:785cff1e5a7c 87 inline double len(const Vec2 &v); // || v ||
BartJanssens 0:785cff1e5a7c 88 inline double sqrlen(const Vec2 &v); // v . v
BartJanssens 0:785cff1e5a7c 89 inline Vec2 norm(const Vec2 &v); // v / || v ||
BartJanssens 0:785cff1e5a7c 90 inline void normalise(Vec2 &v); // v = norm(v)
BartJanssens 0:785cff1e5a7c 91 inline Vec2 cross(const Vec2 &v); // cross prod.
BartJanssens 0:785cff1e5a7c 92
BartJanssens 0:785cff1e5a7c 93 //std::ostream &operator << (std::ostream &s, const Vec2 &v);
BartJanssens 0:785cff1e5a7c 94 //std::istream &operator >> (std::istream &s, Vec2 &v);
BartJanssens 0:785cff1e5a7c 95
BartJanssens 0:785cff1e5a7c 96 inline void printVec2(const Vec2 &v);
BartJanssens 0:785cff1e5a7c 97
BartJanssens 0:785cff1e5a7c 98
BartJanssens 0:785cff1e5a7c 99 // --- Inlines ----------------------------------------------------------------
BartJanssens 0:785cff1e5a7c 100
BartJanssens 0:785cff1e5a7c 101 inline double &Vec2::operator [] (Int i)
BartJanssens 0:785cff1e5a7c 102 {
BartJanssens 0:785cff1e5a7c 103 CheckRange(i, 0, 2, "(Vec2::[i]) index out of range");
BartJanssens 0:785cff1e5a7c 104 return(elt[i]);
BartJanssens 0:785cff1e5a7c 105 }
BartJanssens 0:785cff1e5a7c 106
BartJanssens 0:785cff1e5a7c 107 inline const double &Vec2::operator [] (Int i) const
BartJanssens 0:785cff1e5a7c 108 {
BartJanssens 0:785cff1e5a7c 109 CheckRange(i, 0, 2, "(Vec2::[i]) index out of range");
BartJanssens 0:785cff1e5a7c 110 return(elt[i]);
BartJanssens 0:785cff1e5a7c 111 }
BartJanssens 0:785cff1e5a7c 112
BartJanssens 0:785cff1e5a7c 113 inline Vec2::Vec2()
BartJanssens 0:785cff1e5a7c 114 {
BartJanssens 0:785cff1e5a7c 115 }
BartJanssens 0:785cff1e5a7c 116
BartJanssens 0:785cff1e5a7c 117 inline Vec2::Vec2(double x, double y)
BartJanssens 0:785cff1e5a7c 118 {
BartJanssens 0:785cff1e5a7c 119 elt[0] = x;
BartJanssens 0:785cff1e5a7c 120 elt[1] = y;
BartJanssens 0:785cff1e5a7c 121 }
BartJanssens 0:785cff1e5a7c 122
BartJanssens 0:785cff1e5a7c 123 inline Vec2::Vec2(const Vec2 &v)
BartJanssens 0:785cff1e5a7c 124 {
BartJanssens 0:785cff1e5a7c 125 elt[0] = v[0];
BartJanssens 0:785cff1e5a7c 126 elt[1] = v[1];
BartJanssens 0:785cff1e5a7c 127 }
BartJanssens 0:785cff1e5a7c 128
BartJanssens 0:785cff1e5a7c 129 inline double *Vec2::Ref() const
BartJanssens 0:785cff1e5a7c 130 {
BartJanssens 0:785cff1e5a7c 131 return((double *) elt);
BartJanssens 0:785cff1e5a7c 132 }
BartJanssens 0:785cff1e5a7c 133
BartJanssens 0:785cff1e5a7c 134 inline Vec2 &Vec2::operator = (const Vec2 &v)
BartJanssens 0:785cff1e5a7c 135 {
BartJanssens 0:785cff1e5a7c 136 elt[0] = v[0];
BartJanssens 0:785cff1e5a7c 137 elt[1] = v[1];
BartJanssens 0:785cff1e5a7c 138
BartJanssens 0:785cff1e5a7c 139 return(SELF);
BartJanssens 0:785cff1e5a7c 140 }
BartJanssens 0:785cff1e5a7c 141
BartJanssens 0:785cff1e5a7c 142 inline Vec2 &Vec2::operator += (const Vec2 &v)
BartJanssens 0:785cff1e5a7c 143 {
BartJanssens 0:785cff1e5a7c 144 elt[0] += v[0];
BartJanssens 0:785cff1e5a7c 145 elt[1] += v[1];
BartJanssens 0:785cff1e5a7c 146
BartJanssens 0:785cff1e5a7c 147 return(SELF);
BartJanssens 0:785cff1e5a7c 148 }
BartJanssens 0:785cff1e5a7c 149
BartJanssens 0:785cff1e5a7c 150 inline Vec2 &Vec2::operator -= (const Vec2 &v)
BartJanssens 0:785cff1e5a7c 151 {
BartJanssens 0:785cff1e5a7c 152 elt[0] -= v[0];
BartJanssens 0:785cff1e5a7c 153 elt[1] -= v[1];
BartJanssens 0:785cff1e5a7c 154
BartJanssens 0:785cff1e5a7c 155 return(SELF);
BartJanssens 0:785cff1e5a7c 156 }
BartJanssens 0:785cff1e5a7c 157
BartJanssens 0:785cff1e5a7c 158 inline Vec2 &Vec2::operator *= (const Vec2 &v)
BartJanssens 0:785cff1e5a7c 159 {
BartJanssens 0:785cff1e5a7c 160 elt[0] *= v[0];
BartJanssens 0:785cff1e5a7c 161 elt[1] *= v[1];
BartJanssens 0:785cff1e5a7c 162
BartJanssens 0:785cff1e5a7c 163 return(SELF);
BartJanssens 0:785cff1e5a7c 164 }
BartJanssens 0:785cff1e5a7c 165
BartJanssens 0:785cff1e5a7c 166 inline Vec2 &Vec2::operator *= (double s)
BartJanssens 0:785cff1e5a7c 167 {
BartJanssens 0:785cff1e5a7c 168 elt[0] *= s;
BartJanssens 0:785cff1e5a7c 169 elt[1] *= s;
BartJanssens 0:785cff1e5a7c 170
BartJanssens 0:785cff1e5a7c 171 return(SELF);
BartJanssens 0:785cff1e5a7c 172 }
BartJanssens 0:785cff1e5a7c 173
BartJanssens 0:785cff1e5a7c 174 inline Vec2 &Vec2::operator /= (const Vec2 &v)
BartJanssens 0:785cff1e5a7c 175 {
BartJanssens 0:785cff1e5a7c 176 elt[0] /= v[0];
BartJanssens 0:785cff1e5a7c 177 elt[1] /= v[1];
BartJanssens 0:785cff1e5a7c 178
BartJanssens 0:785cff1e5a7c 179 return(SELF);
BartJanssens 0:785cff1e5a7c 180 }
BartJanssens 0:785cff1e5a7c 181
BartJanssens 0:785cff1e5a7c 182 inline Vec2 &Vec2::operator /= (double s)
BartJanssens 0:785cff1e5a7c 183 {
BartJanssens 0:785cff1e5a7c 184 elt[0] /= s;
BartJanssens 0:785cff1e5a7c 185 elt[1] /= s;
BartJanssens 0:785cff1e5a7c 186
BartJanssens 0:785cff1e5a7c 187 return(SELF);
BartJanssens 0:785cff1e5a7c 188 }
BartJanssens 0:785cff1e5a7c 189
BartJanssens 0:785cff1e5a7c 190 inline Vec2 Vec2::operator + (const Vec2 &a) const
BartJanssens 0:785cff1e5a7c 191 {
BartJanssens 0:785cff1e5a7c 192 Vec2 result;
BartJanssens 0:785cff1e5a7c 193
BartJanssens 0:785cff1e5a7c 194 result[0] = elt[0] + a[0];
BartJanssens 0:785cff1e5a7c 195 result[1] = elt[1] + a[1];
BartJanssens 0:785cff1e5a7c 196
BartJanssens 0:785cff1e5a7c 197 return(result);
BartJanssens 0:785cff1e5a7c 198 }
BartJanssens 0:785cff1e5a7c 199
BartJanssens 0:785cff1e5a7c 200 inline Vec2 Vec2::operator - (const Vec2 &a) const
BartJanssens 0:785cff1e5a7c 201 {
BartJanssens 0:785cff1e5a7c 202 Vec2 result;
BartJanssens 0:785cff1e5a7c 203
BartJanssens 0:785cff1e5a7c 204 result[0] = elt[0] - a[0];
BartJanssens 0:785cff1e5a7c 205 result[1] = elt[1] - a[1];
BartJanssens 0:785cff1e5a7c 206
BartJanssens 0:785cff1e5a7c 207 return(result);
BartJanssens 0:785cff1e5a7c 208 }
BartJanssens 0:785cff1e5a7c 209
BartJanssens 0:785cff1e5a7c 210 inline Vec2 Vec2::operator - () const
BartJanssens 0:785cff1e5a7c 211 {
BartJanssens 0:785cff1e5a7c 212 Vec2 result;
BartJanssens 0:785cff1e5a7c 213
BartJanssens 0:785cff1e5a7c 214 result[0] = -elt[0];
BartJanssens 0:785cff1e5a7c 215 result[1] = -elt[1];
BartJanssens 0:785cff1e5a7c 216
BartJanssens 0:785cff1e5a7c 217 return(result);
BartJanssens 0:785cff1e5a7c 218 }
BartJanssens 0:785cff1e5a7c 219
BartJanssens 0:785cff1e5a7c 220 inline Vec2 Vec2::operator * (const Vec2 &a) const
BartJanssens 0:785cff1e5a7c 221 {
BartJanssens 0:785cff1e5a7c 222 Vec2 result;
BartJanssens 0:785cff1e5a7c 223
BartJanssens 0:785cff1e5a7c 224 result[0] = elt[0] * a[0];
BartJanssens 0:785cff1e5a7c 225 result[1] = elt[1] * a[1];
BartJanssens 0:785cff1e5a7c 226
BartJanssens 0:785cff1e5a7c 227 return(result);
BartJanssens 0:785cff1e5a7c 228 }
BartJanssens 0:785cff1e5a7c 229
BartJanssens 0:785cff1e5a7c 230 inline Vec2 Vec2::operator * (double s) const
BartJanssens 0:785cff1e5a7c 231 {
BartJanssens 0:785cff1e5a7c 232 Vec2 result;
BartJanssens 0:785cff1e5a7c 233
BartJanssens 0:785cff1e5a7c 234 result[0] = elt[0] * s;
BartJanssens 0:785cff1e5a7c 235 result[1] = elt[1] * s;
BartJanssens 0:785cff1e5a7c 236
BartJanssens 0:785cff1e5a7c 237 return(result);
BartJanssens 0:785cff1e5a7c 238 }
BartJanssens 0:785cff1e5a7c 239
BartJanssens 0:785cff1e5a7c 240 inline Vec2 operator * (double s, const Vec2 &v)
BartJanssens 0:785cff1e5a7c 241 {
BartJanssens 0:785cff1e5a7c 242 return(v * s);
BartJanssens 0:785cff1e5a7c 243 }
BartJanssens 0:785cff1e5a7c 244
BartJanssens 0:785cff1e5a7c 245 inline Vec2 Vec2::operator / (const Vec2 &a) const
BartJanssens 0:785cff1e5a7c 246 {
BartJanssens 0:785cff1e5a7c 247 Vec2 result;
BartJanssens 0:785cff1e5a7c 248
BartJanssens 0:785cff1e5a7c 249 result[0] = elt[0] / a[0];
BartJanssens 0:785cff1e5a7c 250 result[1] = elt[1] / a[1];
BartJanssens 0:785cff1e5a7c 251
BartJanssens 0:785cff1e5a7c 252 return(result);
BartJanssens 0:785cff1e5a7c 253 }
BartJanssens 0:785cff1e5a7c 254
BartJanssens 0:785cff1e5a7c 255 inline Vec2 Vec2::operator / (double s) const
BartJanssens 0:785cff1e5a7c 256 {
BartJanssens 0:785cff1e5a7c 257 Vec2 result;
BartJanssens 0:785cff1e5a7c 258
BartJanssens 0:785cff1e5a7c 259 result[0] = elt[0] / s;
BartJanssens 0:785cff1e5a7c 260 result[1] = elt[1] / s;
BartJanssens 0:785cff1e5a7c 261
BartJanssens 0:785cff1e5a7c 262 return(result);
BartJanssens 0:785cff1e5a7c 263 }
BartJanssens 0:785cff1e5a7c 264
BartJanssens 0:785cff1e5a7c 265 inline double dot(const Vec2 &a, const Vec2 &b)
BartJanssens 0:785cff1e5a7c 266 {
BartJanssens 0:785cff1e5a7c 267 return(a[0] * b[0] + a[1] * b[1]);
BartJanssens 0:785cff1e5a7c 268 }
BartJanssens 0:785cff1e5a7c 269
BartJanssens 0:785cff1e5a7c 270 inline Vec2 cross(const Vec2 &a)
BartJanssens 0:785cff1e5a7c 271 {
BartJanssens 0:785cff1e5a7c 272 Vec2 result;
BartJanssens 0:785cff1e5a7c 273
BartJanssens 0:785cff1e5a7c 274 result[0] = a[1];
BartJanssens 0:785cff1e5a7c 275 result[1] = -a[0];
BartJanssens 0:785cff1e5a7c 276
BartJanssens 0:785cff1e5a7c 277 return(result);
BartJanssens 0:785cff1e5a7c 278 }
BartJanssens 0:785cff1e5a7c 279
BartJanssens 0:785cff1e5a7c 280 inline double len(const Vec2 &v)
BartJanssens 0:785cff1e5a7c 281 {
BartJanssens 0:785cff1e5a7c 282 return(sqrt(dot(v, v)));
BartJanssens 0:785cff1e5a7c 283 }
BartJanssens 0:785cff1e5a7c 284
BartJanssens 0:785cff1e5a7c 285 inline double sqrlen(const Vec2 &v)
BartJanssens 0:785cff1e5a7c 286 {
BartJanssens 0:785cff1e5a7c 287 return(dot(v, v));
BartJanssens 0:785cff1e5a7c 288 }
BartJanssens 0:785cff1e5a7c 289
BartJanssens 0:785cff1e5a7c 290 inline Vec2 norm(const Vec2 &v)
BartJanssens 0:785cff1e5a7c 291 {
BartJanssens 0:785cff1e5a7c 292 Assert(sqrlen(v) > 0.0, "normalising length-zero vector");
BartJanssens 0:785cff1e5a7c 293 return(v / len(v));
BartJanssens 0:785cff1e5a7c 294 }
BartJanssens 0:785cff1e5a7c 295
BartJanssens 0:785cff1e5a7c 296 inline void normalise(Vec2 &v)
BartJanssens 0:785cff1e5a7c 297 {
BartJanssens 0:785cff1e5a7c 298 v /= len(v);
BartJanssens 0:785cff1e5a7c 299 }
BartJanssens 0:785cff1e5a7c 300
BartJanssens 0:785cff1e5a7c 301 inline Vec2 &Vec2::MakeUnit(Int i, double k)
BartJanssens 0:785cff1e5a7c 302 {
BartJanssens 0:785cff1e5a7c 303 if (i == 0)
BartJanssens 0:785cff1e5a7c 304 { elt[0] = k; elt[1] = vl_zero; }
BartJanssens 0:785cff1e5a7c 305 else if (i == 1)
BartJanssens 0:785cff1e5a7c 306 { elt[0] = vl_zero; elt[1] = k; }
BartJanssens 0:785cff1e5a7c 307 else
BartJanssens 0:785cff1e5a7c 308 _Error("(Vec2::Unit) illegal unit vector");
BartJanssens 0:785cff1e5a7c 309 return(SELF);
BartJanssens 0:785cff1e5a7c 310 }
BartJanssens 0:785cff1e5a7c 311
BartJanssens 0:785cff1e5a7c 312 inline Vec2 &Vec2::MakeZero()
BartJanssens 0:785cff1e5a7c 313 {
BartJanssens 0:785cff1e5a7c 314 elt[0] = vl_zero; elt[1] = vl_zero;
BartJanssens 0:785cff1e5a7c 315 return(SELF);
BartJanssens 0:785cff1e5a7c 316 }
BartJanssens 0:785cff1e5a7c 317
BartJanssens 0:785cff1e5a7c 318 inline Vec2 &Vec2::MakeBlock(double k)
BartJanssens 0:785cff1e5a7c 319 {
BartJanssens 0:785cff1e5a7c 320 elt[0] = k; elt[1] = k;
BartJanssens 0:785cff1e5a7c 321 return(SELF);
BartJanssens 0:785cff1e5a7c 322 }
BartJanssens 0:785cff1e5a7c 323
BartJanssens 0:785cff1e5a7c 324 inline Vec2 &Vec2::Normalise()
BartJanssens 0:785cff1e5a7c 325 {
BartJanssens 0:785cff1e5a7c 326 Assert(sqrlen(SELF) > 0.0, "normalising length-zero vector");
BartJanssens 0:785cff1e5a7c 327 SELF /= len(SELF);
BartJanssens 0:785cff1e5a7c 328 return(SELF);
BartJanssens 0:785cff1e5a7c 329 }
BartJanssens 0:785cff1e5a7c 330
BartJanssens 0:785cff1e5a7c 331
BartJanssens 0:785cff1e5a7c 332 inline Vec2::Vec2(ZeroOrOne k)
BartJanssens 0:785cff1e5a7c 333 {
BartJanssens 0:785cff1e5a7c 334 elt[0] = k;
BartJanssens 0:785cff1e5a7c 335 elt[1] = k;
BartJanssens 0:785cff1e5a7c 336 }
BartJanssens 0:785cff1e5a7c 337
BartJanssens 0:785cff1e5a7c 338 inline Vec2::Vec2(Axis k)
BartJanssens 0:785cff1e5a7c 339 {
BartJanssens 0:785cff1e5a7c 340 MakeUnit(k, vl_one);
BartJanssens 0:785cff1e5a7c 341 }
BartJanssens 0:785cff1e5a7c 342
BartJanssens 0:785cff1e5a7c 343 inline Vec2 &Vec2::operator = (ZeroOrOne k)
BartJanssens 0:785cff1e5a7c 344 {
BartJanssens 0:785cff1e5a7c 345 elt[0] = k; elt[1] = k;
BartJanssens 0:785cff1e5a7c 346
BartJanssens 0:785cff1e5a7c 347 return(SELF);
BartJanssens 0:785cff1e5a7c 348 }
BartJanssens 0:785cff1e5a7c 349
BartJanssens 0:785cff1e5a7c 350 inline Vec2 &Vec2::operator = (Axis k)
BartJanssens 0:785cff1e5a7c 351 {
BartJanssens 0:785cff1e5a7c 352 MakeUnit(k, vl_1);
BartJanssens 0:785cff1e5a7c 353
BartJanssens 0:785cff1e5a7c 354 return(SELF);
BartJanssens 0:785cff1e5a7c 355 }
BartJanssens 0:785cff1e5a7c 356
BartJanssens 0:785cff1e5a7c 357 inline bool Vec2::operator == (const Vec2 &a) const
BartJanssens 0:785cff1e5a7c 358 {
BartJanssens 0:785cff1e5a7c 359 return(elt[0] == a[0] && elt[1] == a[1]);
BartJanssens 0:785cff1e5a7c 360 }
BartJanssens 0:785cff1e5a7c 361
BartJanssens 0:785cff1e5a7c 362 inline bool Vec2::operator != (const Vec2 &a) const
BartJanssens 0:785cff1e5a7c 363 {
BartJanssens 0:785cff1e5a7c 364 return(elt[0] != a[0] || elt[1] != a[1]);
BartJanssens 0:785cff1e5a7c 365 }
BartJanssens 0:785cff1e5a7c 366
BartJanssens 0:785cff1e5a7c 367 inline void printVec2(const Vec2 &v)
BartJanssens 0:785cff1e5a7c 368 {
BartJanssens 0:785cff1e5a7c 369 printf("[%10f %10f]",v[0],v[1]);
BartJanssens 0:785cff1e5a7c 370 }
BartJanssens 0:785cff1e5a7c 371
BartJanssens 0:785cff1e5a7c 372
BartJanssens 0:785cff1e5a7c 373 #endif