HologramDepthmap Library
ivec.h
Go to the documentation of this file.
1 #ifndef __ivec_h
2 #define __ivec_h
3 //|
4 //| ivec : n-dimensional ivector
5 //|
6 
7 #include <stdio.h>
8 
9 namespace graphics {
10 
14 struct ivec2 {
15  int v[2];
16  static const int n;
17 
18  inline ivec2() { };
19 
20  inline ivec2(int a)
21  {
22  v[1 - 1] = a; v[2 - 1] = a;
23  }
24 
25  inline ivec2(int v_1 , int v_2 )
26  {
27  v[1 - 1] = v_1; v[2 - 1] = v_2;
28  }
29 
30  inline ivec2(const ivec2& a)
31  {
32  v[1 - 1] = a[1 - 1]; v[2 - 1] = a[2 - 1];
33  }
34 
35  inline ivec2& operator=(const ivec2& a)
36  {
37  v[1 - 1] = a[1 - 1]; v[2 - 1] = a[2 - 1];
38  return *this;
39  }
40 
41 
42  inline int& operator[] (int i) { return v[i]; }
43  inline const int& operator[] (int i) const { return v[i]; }
44  inline int& operator() (int i) { return v[i % 2]; }
45  inline const int& operator() (int i) const { return v[i % 2]; }
46 };
47 
48 
49 
50 
51 //| binary op : componentwise
52 
53 
54 inline ivec2 operator + (const ivec2& a, const ivec2& b)
55 {
56  ivec2 c;
57  for(int i = 0; i < 2;++i) { c[i] = a[i] + b[i]; }
58  return c;
59 }
60 
61 inline ivec2 operator + (int a, const ivec2& b)
62 {
63  ivec2 c;
64  for(int i = 0; i < 2;++i) { c[i] = a + b[i]; }
65  return c;
66 }
67 
68 inline ivec2 operator + (const ivec2& a, int b)
69 {
70  ivec2 c;
71  for(int i = 0; i < 2;++i) { c[i] = a[i] + b; }
72  return c;
73 }
74 
75 
76 
77 inline ivec2 operator - (const ivec2& a, const ivec2& b)
78 {
79  ivec2 c;
80  for(int i = 0; i < 2;++i) { c[i] = a[i] - b[i]; }
81  return c;
82 }
83 
84 inline ivec2 operator - (int a, const ivec2& b)
85 {
86  ivec2 c;
87  for(int i = 0; i < 2;++i) { c[i] = a - b[i]; }
88  return c;
89 }
90 
91 inline ivec2 operator - (const ivec2& a, int b)
92 {
93  ivec2 c;
94  for(int i = 0; i < 2;++i) { c[i] = a[i] - b; }
95  return c;
96 }
97 
98 
99 
100 inline ivec2 operator * (const ivec2& a, const ivec2& b)
101 {
102  ivec2 c;
103  for(int i = 0; i < 2;++i) { c[i] = a[i] * b[i]; }
104  return c;
105 }
106 
107 inline ivec2 operator * (int a, const ivec2& b)
108 {
109  ivec2 c;
110  for(int i = 0; i < 2;++i) { c[i] = a * b[i]; }
111  return c;
112 }
113 
114 inline ivec2 operator * (const ivec2& a, int b)
115 {
116  ivec2 c;
117  for(int i = 0; i < 2;++i) { c[i] = a[i] * b; }
118  return c;
119 }
120 
121 
122 //
123 //inline ivec2 operator / (const ivec2& a, const ivec2& b)
124 //{
125 // ivec2 c;
126 // for(int i = 0; i < 2;++i) { c[i] = a[i] / b[i]; }
127 // return c;
128 //}
129 //
130 //inline ivec2 operator / (int a, const ivec2& b)
131 //{
132 // ivec2 c;
133 // for(int i = 0; i < 2;++i) { c[i] = a / b[i]; }
134 // return c;
135 //}
136 //
137 //inline ivec2 operator / (const ivec2& a, int b)
138 //{
139 // ivec2 c;
140 // for(int i = 0; i < 2;++i) { c[i] = a[i] / b; }
141 // return c;
142 //}
143 
144 
145 
146 //| cumulative op : componentwise
147 
148 
149 inline ivec2 operator += (ivec2& a, const ivec2& b)
150 {
151  return a = (a + b);
152 }
153 
154 inline ivec2 operator += (ivec2& a, int b)
155 {
156  return a = (a + b);
157 }
158 
159 
160 
161 inline ivec2 operator -= (ivec2& a, const ivec2& b)
162 {
163  return a = (a - b);
164 }
165 
166 inline ivec2 operator -= (ivec2& a, int b)
167 {
168  return a = (a - b);
169 }
170 
171 
172 
173 inline ivec2 operator *= (ivec2& a, const ivec2& b)
174 {
175  return a = (a * b);
176 }
177 
178 inline ivec2 operator *= (ivec2& a, int b)
179 {
180  return a = (a * b);
181 }
182 
183 
184 
185 //inline ivec2 operator /= (ivec2& a, const ivec2& b)
186 //{
187 // return a = (a / b);
188 //}
189 //
190 //inline ivec2 operator /= (ivec2& a, int b)
191 //{
192 // return a = (a / b);
193 //}
194 
195 
196 
197 //| logical op : componentwise
198 
199 
200 inline int operator == (const ivec2& a, const ivec2& b)
201 {
202  int c = 1;
203  for(int i = 0; i < 2;++i) { c = c && a[i] == b[i]; }
204  return c;
205 }
206 
207 inline int operator == (int a, const ivec2& b)
208 {
209  int c = 1;
210  for(int i = 0; i < 2;++i) { c = c && a == b[i]; }
211  return c;
212 }
213 
214 inline int operator == (const ivec2& a, int b)
215 {
216  int c = 1;
217  for(int i = 0; i < 2;++i) { c = c && a[i] == b; }
218  return c;
219 }
220 
221 
222 
223 inline int operator < (const ivec2& a, const ivec2& b)
224 {
225  int c = 1;
226  for(int i = 0; i < 2;++i) { c = c && a[i] < b[i]; }
227  return c;
228 }
229 
230 inline int operator < (int a, const ivec2& b)
231 {
232  int c = 1;
233  for(int i = 0; i < 2;++i) { c = c && a < b[i]; }
234  return c;
235 }
236 
237 inline int operator < (const ivec2& a, int b)
238 {
239  int c = 1;
240  for(int i = 0; i < 2;++i) { c = c && a[i] < b; }
241  return c;
242 }
243 
244 
245 
246 inline int operator <= (const ivec2& a, const ivec2& b)
247 {
248  int c = 1;
249  for(int i = 0; i < 2;++i) { c = c && a[i] <= b[i]; }
250  return c;
251 }
252 
253 inline int operator <= (int a, const ivec2& b)
254 {
255  int c = 1;
256  for(int i = 0; i < 2;++i) { c = c && a <= b[i]; }
257  return c;
258 }
259 
260 inline int operator <= (const ivec2& a, int b)
261 {
262  int c = 1;
263  for(int i = 0; i < 2;++i) { c = c && a[i] <= b; }
264  return c;
265 }
266 
267 
268 
269 inline int operator > (const ivec2& a, const ivec2& b)
270 {
271  int c = 1;
272  for(int i = 0; i < 2;++i) { c = c && a[i] > b[i]; }
273  return c;
274 }
275 
276 inline int operator > (int a, const ivec2& b)
277 {
278  int c = 1;
279  for(int i = 0; i < 2;++i) { c = c && a > b[i]; }
280  return c;
281 }
282 
283 inline int operator > (const ivec2& a, int b)
284 {
285  int c = 1;
286  for(int i = 0; i < 2;++i) { c = c && a[i] > b; }
287  return c;
288 }
289 
290 
291 
292 
293 inline int operator >= (const ivec2& a, const ivec2& b)
294 {
295  int c = 1;
296  for(int i = 0; i < 2;++i) { c = c && a[i] >= b[i]; }
297  return c;
298 }
299 inline int operator >= (int a, const ivec2& b)
300 {
301  int c = 1;
302  for(int i = 0; i < 2;++i) { c = c && a >= b[i]; }
303  return c;
304 }
305 
306 inline int operator >= (const ivec2& a, int b)
307 {
308  int c = 1;
309  for(int i = 0; i < 2;++i) { c = c && a[i] >= b; }
310  return c;
311 }
312 
313 inline int operator != (const ivec2& a, const ivec2& b)
314 {
315  int c = 1;
316  for(int i = 0; i < 2;++i) { c = c && a[i] != b[i]; }
317  return c;
318 }
319 
320 //| unary op : componentwise
321 inline ivec2 operator - (const ivec2& a)
322 {
323  ivec2 c;
324  for(int i = 0; i < 2;++i) { c[i] = -a[i]; }
325  return c;
326 }
327 
331 struct ivec3 {
332  int v[3];
333  static const int n;
334 
335  inline ivec3() { };
336 
337  inline ivec3(int a)
338  {
339  v[1 - 1] = a; v[2 - 1] = a; v[3 - 1] = a;
340  }
341 
342  inline ivec3(int v_1 , int v_2 , int v_3 )
343  {
344  v[1 - 1] = v_1; v[2 - 1] = v_2; v[3 - 1] = v_3;
345  }
346 
347  inline ivec3(const ivec3& a)
348  {
349  v[1 - 1] = a[1 - 1]; v[2 - 1] = a[2 - 1]; v[3 - 1] = a[3 - 1];
350  }
351 
352  inline ivec3& operator=(const ivec3& a)
353  {
354  v[1 - 1] = a[1 - 1]; v[2 - 1] = a[2 - 1]; v[3 - 1] = a[3 - 1];
355  return *this;
356  }
357 
358 
359  inline int& operator[] (int i) { return v[i]; }
360  inline const int& operator[] (int i) const { return v[i]; }
361  inline int& operator() (int i) { return v[i % 3]; }
362  inline const int& operator() (int i) const { return v[i % 3]; }
363 };
364 //| binary op : componentwise
365 
366 inline ivec3 operator + (const ivec3& a, const ivec3& b)
367 {
368  ivec3 c;
369  for(int i = 0; i < 3;++i) { c[i] = a[i] + b[i]; }
370  return c;
371 }
372 
373 inline ivec3 operator + (int a, const ivec3& b)
374 {
375  ivec3 c;
376  for(int i = 0; i < 3;++i) { c[i] = a + b[i]; }
377  return c;
378 }
379 
380 inline ivec3 operator + (const ivec3& a, int b)
381 {
382  ivec3 c;
383  for(int i = 0; i < 3;++i) { c[i] = a[i] + b; }
384  return c;
385 }
386 
387 
388 
389 inline ivec3 operator - (const ivec3& a, const ivec3& b)
390 {
391  ivec3 c;
392  for(int i = 0; i < 3;++i) { c[i] = a[i] - b[i]; }
393  return c;
394 }
395 
396 inline ivec3 operator - (int a, const ivec3& b)
397 {
398  ivec3 c;
399  for(int i = 0; i < 3;++i) { c[i] = a - b[i]; }
400  return c;
401 }
402 
403 inline ivec3 operator - (const ivec3& a, int b)
404 {
405  ivec3 c;
406  for(int i = 0; i < 3;++i) { c[i] = a[i] - b; }
407  return c;
408 }
409 
410 
411 
412 inline ivec3 operator * (const ivec3& a, const ivec3& b)
413 {
414  ivec3 c;
415  for(int i = 0; i < 3;++i) { c[i] = a[i] * b[i]; }
416  return c;
417 }
418 
419 inline ivec3 operator * (int a, const ivec3& b)
420 {
421  ivec3 c;
422  for(int i = 0; i < 3;++i) { c[i] = a * b[i]; }
423  return c;
424 }
425 
426 inline ivec3 operator * (const ivec3& a, int b)
427 {
428  ivec3 c;
429  for(int i = 0; i < 3;++i) { c[i] = a[i] * b; }
430  return c;
431 }
432 
433 //
434 //
435 //inline ivec3 operator / (const ivec3& a, const ivec3& b)
436 //{
437 // ivec3 c;
438 // for(int i = 0; i < 3;++i) { c[i] = a[i] / b[i]; }
439 // return c;
440 //}
441 //
442 //inline ivec3 operator / (int a, const ivec3& b)
443 //{
444 // ivec3 c;
445 // for(int i = 0; i < 3;++i) { c[i] = a / b[i]; }
446 // return c;
447 //}
448 //
449 //inline ivec3 operator / (const ivec3& a, int b)
450 //{
451 // ivec3 c;
452 // for(int i = 0; i < 3;++i) { c[i] = a[i] / b; }
453 // return c;
454 //}
455 
456 
457 
458 //| cumulative op : componentwise
459 
460 
461 inline ivec3 operator += (ivec3& a, const ivec3& b)
462 {
463  return a = (a + b);
464 }
465 
466 inline ivec3 operator += (ivec3& a, int b)
467 {
468  return a = (a + b);
469 }
470 
471 
472 
473 inline ivec3 operator -= (ivec3& a, const ivec3& b)
474 {
475  return a = (a - b);
476 }
477 
478 inline ivec3 operator -= (ivec3& a, int b)
479 {
480  return a = (a - b);
481 }
482 
483 
484 
485 inline ivec3 operator *= (ivec3& a, const ivec3& b)
486 {
487  return a = (a * b);
488 }
489 
490 inline ivec3 operator *= (ivec3& a, int b)
491 {
492  return a = (a * b);
493 }
494 
495 
496 //
497 //inline ivec3 operator /= (ivec3& a, const ivec3& b)
498 //{
499 // return a = (a / b);
500 //}
501 //
502 //inline ivec3 operator /= (ivec3& a, int b)
503 //{
504 // return a = (a / b);
505 //}
506 
507 
508 
509 //| logical op : componentwise
510 
511 
512 inline int operator == (const ivec3& a, const ivec3& b)
513 {
514  int c = 1;
515  for(int i = 0; i < 3;++i) { c = c && a[i] == b[i]; }
516  return c;
517 }
518 
519 inline int operator == (int a, const ivec3& b)
520 {
521  int c = 1;
522  for(int i = 0; i < 3;++i) { c = c && a == b[i]; }
523  return c;
524 }
525 
526 inline int operator == (const ivec3& a, int b)
527 {
528  int c = 1;
529  for(int i = 0; i < 3;++i) { c = c && a[i] == b; }
530  return c;
531 }
532 
533 
534 
535 inline int operator < (const ivec3& a, const ivec3& b)
536 {
537  int c = 1;
538  for(int i = 0; i < 3;++i) { c = c && a[i] < b[i]; }
539  return c;
540 }
541 
542 inline int operator < (int a, const ivec3& b)
543 {
544  int c = 1;
545  for(int i = 0; i < 3;++i) { c = c && a < b[i]; }
546  return c;
547 }
548 
549 inline int operator < (const ivec3& a, int b)
550 {
551  int c = 1;
552  for(int i = 0; i < 3;++i) { c = c && a[i] < b; }
553  return c;
554 }
555 
556 
557 
558 inline int operator <= (const ivec3& a, const ivec3& b)
559 {
560  int c = 1;
561  for(int i = 0; i < 3;++i) { c = c && a[i] <= b[i]; }
562  return c;
563 }
564 
565 inline int operator <= (int a, const ivec3& b)
566 {
567  int c = 1;
568  for(int i = 0; i < 3;++i) { c = c && a <= b[i]; }
569  return c;
570 }
571 
572 inline int operator <= (const ivec3& a, int b)
573 {
574  int c = 1;
575  for(int i = 0; i < 3;++i) { c = c && a[i] <= b; }
576  return c;
577 }
578 
579 
580 
581 inline int operator > (const ivec3& a, const ivec3& b)
582 {
583  int c = 1;
584  for(int i = 0; i < 3;++i) { c = c && a[i] > b[i]; }
585  return c;
586 }
587 
588 inline int operator > (int a, const ivec3& b)
589 {
590  int c = 1;
591  for(int i = 0; i < 3;++i) { c = c && a > b[i]; }
592  return c;
593 }
594 
595 inline int operator > (const ivec3& a, int b)
596 {
597  int c = 1;
598  for(int i = 0; i < 3;++i) { c = c && a[i] > b; }
599  return c;
600 }
601 
602 
603 
604 inline int operator >= (const ivec3& a, const ivec3& b)
605 {
606  int c = 1;
607  for(int i = 0; i < 3;++i) { c = c && a[i] >= b[i]; }
608  return c;
609 }
610 
611 inline int operator >= (int a, const ivec3& b)
612 {
613  int c = 1;
614  for(int i = 0; i < 3;++i) { c = c && a >= b[i]; }
615  return c;
616 }
617 
618 inline int operator >= (const ivec3& a, int b)
619 {
620  int c = 1;
621  for(int i = 0; i < 3;++i) { c = c && a[i] >= b; }
622  return c;
623 }
624 
625 inline int operator != (const ivec3& a, const ivec3& b)
626 {
627  int c = 1;
628  for(int i = 0; i < 3;++i) { c = c && a[i] != b[i]; }
629  return c;
630 }
631 
632 //| unary op : componentwise
633 inline ivec3 operator - (const ivec3& a)
634 {
635  ivec3 c;
636  for(int i = 0; i < 3;++i) { c[i] = -a[i]; }
637  return c;
638 }
639 
643 struct ivec4 {
644  int v[4];
645  static const int n;
646 
647  inline ivec4() { };
648 
649  inline ivec4(int a)
650  {
651  v[1 - 1] = a; v[2 - 1] = a; v[3 - 1] = a; v[4 - 1] = a;
652  }
653 
654  inline ivec4(int v_1 , int v_2 , int v_3 , int v_4 )
655  {
656  v[1 - 1] = v_1; v[2 - 1] = v_2; v[3 - 1] = v_3; v[4 - 1] = v_4;
657  }
658 
659  inline ivec4(const ivec4& a)
660  {
661  v[1 - 1] = a[1 - 1]; v[2 - 1] = a[2 - 1]; v[3 - 1] = a[3 - 1]; v[4 - 1] = a[4 - 1];
662  }
663 
664  inline ivec4& operator=(const ivec4& a)
665  {
666  v[1 - 1] = a[1 - 1]; v[2 - 1] = a[2 - 1]; v[3 - 1] = a[3 - 1]; v[4 - 1] = a[4 - 1];
667  return *this;
668  }
669 
670 
671  inline int& operator[] (int i) { return v[i]; }
672  inline const int& operator[] (int i) const { return v[i]; }
673  inline int& operator() (int i) { return v[i % 4]; }
674  inline const int& operator() (int i) const { return v[i % 4]; }
675 };
676 
677 
678 
679 
680 //| binary op : componentwise
681 
682 
683 inline ivec4 operator + (const ivec4& a, const ivec4& b)
684 {
685  ivec4 c;
686  for(int i = 0; i < 4;++i) { c[i] = a[i] + b[i]; }
687  return c;
688 }
689 
690 inline ivec4 operator + (int a, const ivec4& b)
691 {
692  ivec4 c;
693  for(int i = 0; i < 4;++i) { c[i] = a + b[i]; }
694  return c;
695 }
696 
697 inline ivec4 operator + (const ivec4& a, int b)
698 {
699  ivec4 c;
700  for(int i = 0; i < 4;++i) { c[i] = a[i] + b; }
701  return c;
702 }
703 
704 
705 
706 inline ivec4 operator - (const ivec4& a, const ivec4& b)
707 {
708  ivec4 c;
709  for(int i = 0; i < 4;++i) { c[i] = a[i] - b[i]; }
710  return c;
711 }
712 
713 inline ivec4 operator - (int a, const ivec4& b)
714 {
715  ivec4 c;
716  for(int i = 0; i < 4;++i) { c[i] = a - b[i]; }
717  return c;
718 }
719 
720 inline ivec4 operator - (const ivec4& a, int b)
721 {
722  ivec4 c;
723  for(int i = 0; i < 4;++i) { c[i] = a[i] - b; }
724  return c;
725 }
726 
727 
728 
729 inline ivec4 operator * (const ivec4& a, const ivec4& b)
730 {
731  ivec4 c;
732  for(int i = 0; i < 4;++i) { c[i] = a[i] * b[i]; }
733  return c;
734 }
735 
736 inline ivec4 operator * (int a, const ivec4& b)
737 {
738  ivec4 c;
739  for(int i = 0; i < 4;++i) { c[i] = a * b[i]; }
740  return c;
741 }
742 
743 inline ivec4 operator * (const ivec4& a, int b)
744 {
745  ivec4 c;
746  for(int i = 0; i < 4;++i) { c[i] = a[i] * b; }
747  return c;
748 }
749 
750 
751 //
752 //inline ivec4 operator / (const ivec4& a, const ivec4& b)
753 //{
754 // ivec4 c;
755 // for(int i = 0; i < 4;++i) { c[i] = a[i] / b[i]; }
756 // return c;
757 //}
758 //
759 //inline ivec4 operator / (int a, const ivec4& b)
760 //{
761 // ivec4 c;
762 // for(int i = 0; i < 4;++i) { c[i] = a / b[i]; }
763 // return c;
764 //}
765 //
766 //inline ivec4 operator / (const ivec4& a, int b)
767 //{
768 // ivec4 c;
769 // for(int i = 0; i < 4;++i) { c[i] = a[i] / b; }
770 // return c;
771 //}
772 
773 
774 
775 //| cumulative op : componentwise
776 
777 
778 inline ivec4 operator += (ivec4& a, const ivec4& b)
779 {
780  return a = (a + b);
781 }
782 
783 inline ivec4 operator += (ivec4& a, int b)
784 {
785  return a = (a + b);
786 }
787 
788 
789 
790 inline ivec4 operator -= (ivec4& a, const ivec4& b)
791 {
792  return a = (a - b);
793 }
794 
795 inline ivec4 operator -= (ivec4& a, int b)
796 {
797  return a = (a - b);
798 }
799 
800 
801 
802 inline ivec4 operator *= (ivec4& a, const ivec4& b)
803 {
804  return a = (a * b);
805 }
806 
807 inline ivec4 operator *= (ivec4& a, int b)
808 {
809  return a = (a * b);
810 }
811 
812 
813 
814 //inline ivec4 operator /= (ivec4& a, const ivec4& b)
815 //{
816 // return a = (a / b);
817 //}
818 //
819 //inline ivec4 operator /= (ivec4& a, int b)
820 //{
821 // return a = (a / b);
822 //}
823 
824 
825 
826 //| logical op : componentwise
827 
828 
829 inline int operator == (const ivec4& a, const ivec4& b)
830 {
831  int c = 1;
832  for(int i = 0; i < 4;++i) { c = c && a[i] == b[i]; }
833  return c;
834 }
835 
836 inline int operator == (int a, const ivec4& b)
837 {
838  int c = 1;
839  for(int i = 0; i < 4;++i) { c = c && a == b[i]; }
840  return c;
841 }
842 
843 inline int operator == (const ivec4& a, int b)
844 {
845  int c = 1;
846  for(int i = 0; i < 4;++i) { c = c && a[i] == b; }
847  return c;
848 }
849 
850 
851 
852 inline int operator < (const ivec4& a, const ivec4& b)
853 {
854  int c = 1;
855  for(int i = 0; i < 4;++i) { c = c && a[i] < b[i]; }
856  return c;
857 }
858 
859 inline int operator < (int a, const ivec4& b)
860 {
861  int c = 1;
862  for(int i = 0; i < 4;++i) { c = c && a < b[i]; }
863  return c;
864 }
865 
866 inline int operator < (const ivec4& a, int b)
867 {
868  int c = 1;
869  for(int i = 0; i < 4;++i) { c = c && a[i] < b; }
870  return c;
871 }
872 
873 
874 
875 inline int operator <= (const ivec4& a, const ivec4& b)
876 {
877  int c = 1;
878  for(int i = 0; i < 4;++i) { c = c && a[i] <= b[i]; }
879  return c;
880 }
881 
882 inline int operator <= (int a, const ivec4& b)
883 {
884  int c = 1;
885  for(int i = 0; i < 4;++i) { c = c && a <= b[i]; }
886  return c;
887 }
888 
889 inline int operator <= (const ivec4& a, int b)
890 {
891  int c = 1;
892  for(int i = 0; i < 4;++i) { c = c && a[i] <= b; }
893  return c;
894 }
895 
896 
897 
898 inline int operator > (const ivec4& a, const ivec4& b)
899 {
900  int c = 1;
901  for(int i = 0; i < 4;++i) { c = c && a[i] > b[i]; }
902  return c;
903 }
904 
905 inline int operator > (int a, const ivec4& b)
906 {
907  int c = 1;
908  for(int i = 0; i < 4;++i) { c = c && a > b[i]; }
909  return c;
910 }
911 
912 inline int operator > (const ivec4& a, int b)
913 {
914  int c = 1;
915  for(int i = 0; i < 4;++i) { c = c && a[i] > b; }
916  return c;
917 }
918 
919 
920 
921 inline int operator >= (const ivec4& a, const ivec4& b)
922 {
923  int c = 1;
924  for(int i = 0; i < 4;++i) { c = c && a[i] >= b[i]; }
925  return c;
926 }
927 
928 inline int operator != (const ivec4& a, const ivec4& b)
929 {
930  int c = 1;
931  for(int i = 0; i < 4;++i) { c = c && a[i] != b[i]; }
932  return c;
933 }
934 
935 inline int operator >= (int a, const ivec4& b)
936 {
937  int c = 1;
938  for(int i = 0; i < 4;++i) { c = c && a >= b[i]; }
939  return c;
940 }
941 
942 inline int operator >= (const ivec4& a, int b)
943 {
944  int c = 1;
945  for(int i = 0; i < 4;++i) { c = c && a[i] >= b; }
946  return c;
947 }
948 
949 
950 
951 //| unary op : componentwise
952 inline ivec4 operator - (const ivec4& a)
953 {
954  ivec4 c;
955  for(int i = 0; i < 4;++i) { c[i] = -a[i]; }
956  return c;
957 }
958 
959 }; //namespace graphics
960 #endif
ivec2 operator*=(ivec2 &a, const ivec2 &b)
Definition: ivec.h:173
int operator!=(const ivec2 &a, const ivec2 &b)
Definition: ivec.h:313
ivec4 & operator=(const ivec4 &a)
Definition: ivec.h:664
ivec2 operator+=(ivec2 &a, const ivec2 &b)
Definition: ivec.h:149
static const int n
Definition: ivec.h:16
static const int n
Definition: ivec.h:645
ivec4(int v_1, int v_2, int v_3, int v_4)
Definition: ivec.h:654
ivec2 operator+(const ivec2 &a, const ivec2 &b)
Definition: ivec.h:54
int & operator[](int i)
Definition: ivec.h:42
int v[2]
Definition: ivec.h:15
structure for 4-dimensional integer vector and its arithmetic.
Definition: ivec.h:643
ivec2 operator*(const ivec2 &a, const ivec2 &b)
Definition: ivec.h:100
structure for 2-dimensional integer vector and its arithmetic.
Definition: ivec.h:14
int operator<=(const ivec2 &a, const ivec2 &b)
Definition: ivec.h:246
ivec3(int a)
Definition: ivec.h:337
ivec3(const ivec3 &a)
Definition: ivec.h:347
ivec2 & operator=(const ivec2 &a)
Definition: ivec.h:35
structure for 3-dimensional integer vector and its arithmetic.
Definition: ivec.h:331
ivec4(int a)
Definition: ivec.h:649
int operator>=(const ivec2 &a, const ivec2 &b)
Definition: ivec.h:293
ivec3(int v_1, int v_2, int v_3)
Definition: ivec.h:342
ivec2 operator-=(ivec2 &a, const ivec2 &b)
Definition: ivec.h:161
ivec2(const ivec2 &a)
Definition: ivec.h:30
int operator<(const ivec2 &a, const ivec2 &b)
Definition: ivec.h:223
int operator>(const ivec2 &a, const ivec2 &b)
Definition: ivec.h:269
static const int n
Definition: ivec.h:333
int & operator()(int i)
Definition: ivec.h:44
ivec2(int v_1, int v_2)
Definition: ivec.h:25
ivec2 operator-(const ivec2 &a, const ivec2 &b)
Definition: ivec.h:77
int operator==(const ivec2 &a, const ivec2 &b)
Definition: ivec.h:200
ivec4(const ivec4 &a)
Definition: ivec.h:659
ivec2(int a)
Definition: ivec.h:20
ivec3 & operator=(const ivec3 &a)
Definition: ivec.h:352