#include <math.h>
#include "xvector.h"
Include dependency graph for vec.h:
This graph shows which files directly or indirectly include this file:
Go to the source code of this file.
Defines | |
#define | QFLOAT float |
#define | XSQRT sqrtf |
#define | XVector Vector |
#define | YVector QVector |
#define | QFLOAT double |
#define | XSQRT sqrt |
#define | XVector QVector |
#define | YVector Vector |
Functions | |
template<class XVector, class DoItType> void | forEach3dVector (XVector first, XVector last, DoItType DoIt, XVector increment) |
forEach3dvector will cycle through all the possible Vectors in a given region, calling DoIt's () operator on each Vector. More... | |
template<class XVector, class DoItType> void | forEach2dVector (XVector first, XVector last, DoItType DoIt, XVector increment) |
for_each_2d_vector will cycle through all the possible Vectors in a given 2-dimensional region, calling DoIt's () operator on each Vector. More... |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for_each_2d_vector will cycle through all the possible Vectors in a given 2-dimensional region, calling DoIt's () operator on each Vector. for_each_2d_vector takes in a first and a last Vector: The first contains the starting coordinates adn the last contains the ending coordinates. first and last can either be of type Vector or QVector. Increment is a Vector which specifies how much to increment all of the different values. DoIt can be of any type, and is only required to have an operator() function that takes in a Vector. NOTE: If the z (k) value is required, use the for_each_vector function instead.
00083 { 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 } |
|
forEach3dvector will cycle through all the possible Vectors in a given region, calling DoIt's () operator on each Vector. forEach3dVector takes in a first and a last Vector: The first contains the starting coordinates adn the last contains the ending coordinates. first and last can either be of type Vector or QVector. Increment is a Vector which specifies how much to increment all of the different values. DoIt can be of any type, and is only required to have an operator() function that takes in a Vector. NOTE: If the z (k) value is not needed, use the for_each_3d_vector function instead.
00059 { 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 } |