Main Page   Namespace List   Class Hierarchy   Compound List   File List   Namespace Members   Compound Members   File Members  

vec.h

Go to the documentation of this file.
00001 #ifndef _3DMANIP_H_
00002 #define _3DMANIP_H_
00003 #include <math.h>
00004 #define QFLOAT float
00005 #define XSQRT sqrtf
00006 #define XVector Vector
00007 #define YVector QVector
00008 #include "xvector.h"
00009 #undef QFLOAT
00010 #undef XVector
00011 #undef YVector
00012 #undef XSQRT
00013 #define QFLOAT double
00014 #define XSQRT sqrt
00015 #define XVector QVector
00016 #define YVector Vector
00017 
00018 #include "xvector.h"
00019 #undef XSQRT
00020 #undef QFLOAT
00021 #undef XVector
00022 #undef YVector
00023 
00024 inline Vector QVector::operator =(const Vector &a) {
00025   i=a.i;
00026   j=a.j;
00027   k=a.k;
00028   return a;
00029 }
00030 inline QVector::QVector (const Vector &a) {
00031   i=a.i;
00032   j=a.j;
00033   k=a.k;
00034 }
00035 inline QVector Vector::operator = (const QVector &a) {
00036   i=a.i;
00037   j=a.j;
00038   k=a.k;
00039   return a;
00040 }
00041 inline Vector::Vector (const QVector &a) {
00042   i=a.i;
00043   j=a.j;
00044   k=a.k;
00045 }
00046 inline QVector Vector::Cast() const{
00047   return QVector (i,j,k);
00048 }
00049 inline Vector QVector::Cast() const{
00050   return Vector (i,j,k);
00051 }
00053 
00059 template <class XVector, class DoItType> inline void forEach3dVector (XVector first, XVector last, DoItType DoIt, XVector increment) {
00060     first.Set(floor(first.i/increment.i)*increment.i,
00061               floor(first.j/increment.j)*increment.j,
00062               floor(first.k/increment.k)*increment.k);
00063     last.Set(ceil(last.i/increment.i)*increment.i,
00064              ceil(last.j/increment.j)*increment.j,
00065              ceil(last.k/increment.k)*increment.k);
00066     XVector xvec (first);
00067     for (first.k=xvec.k;first.k<last.k;first.k+=increment.k) {
00068         for (first.j=xvec.j;first.j<last.j;first.j+=increment.j) {
00069             for (first.i=xvec.i;first.i<last.i;first.i+=increment.i) {
00070                 DoIt(first);
00071             }
00072         }
00073     }
00074 }
00075 
00077 
00083 template <class XVector, class DoItType> inline void forEach2dVector (XVector first, XVector last, DoItType DoIt, XVector increment) {
00084     first.Set(floor(first.i/increment.i)*increment.i,
00085               floor(first.j/increment.j)*increment.j,
00086               first.k);
00087     last.Set(ceil(last.i/increment.i)*increment.i,
00088               ceil(last.j/increment.j)*increment.j,
00089               last.k);
00090     XVector xvec (first);
00091     for (first.j=xvec.j;first.j<last.j;first.j+=increment.j) {
00092         for (first.i=xvec.i;first.i<last.i;first.i+=increment.i) {
00093             DoIt(first);
00094         }
00095     }
00096 }
00097 
00098 #endif
00099 

Generated on Mon Jul 7 21:13:45 2003 for Ethereal by doxygen1.2.15