Subversion Repositories gelsvn

Rev

Rev 595 | Blame | Compare with Previous | Last modification | View Log | RSS feed

/* ----------------------------------------------------------------------- *
 * This file is part of GEL, http://www.imm.dtu.dk/GEL
 * Copyright (C) the authors and DTU Informatics
 * For license and list of authors, see ../../doc/intro.pdf
 * ----------------------------------------------------------------------- */


//#include <iostream>
#include "GradientFilter.h"
#include "../Geometry/Neighbours.h"
#include "../Geometry/RGrid.h"

using namespace std;
using namespace CGLA;
using namespace Geometry;


namespace Geometry
{
        template<class GridT>
        bool GradientFilter<GridT>::in_domain(const CGLA::Vec3i& p) const
        {
                const Vec3i& dims = grid->get_dims();
                for(int i=0; i<3; ++i)
                        if ((p[i]-1)<0 || (p[i]+1) >= dims[i])
                                return false;
                return true;
        }

        template<class GridT>
        bool GradientFilter<GridT>::map(const Vec3i& p, Vec3f& g) const
        {
//              bool pit, mit;
                
                float vxm = (*grid)[p+N6i[0]];
                float vxp = (*grid)[p+N6i[1]];
                float vym = (*grid)[p+N6i[2]];
                float vyp = (*grid)[p+N6i[3]];
                float vzm = (*grid)[p+N6i[4]];
                float vzp = (*grid)[p+N6i[5]];
                float dx = (float(vxp)-vxm)/2.0f;
                float dy = (float(vyp)-vym)/2.0f;
                float dz = (float(vzp)-vzm)/2.0f;
                g = Vec3f(dx,dy,dz);
                return true;
        }


        template class GradientFilter<Geometry::RGrid<float> >;
        template class GradientFilter<Geometry::RGrid<unsigned char> >;
        template class GradientFilter<Geometry::RGrid<unsigned short> >;
}