Subversion Repositories gelsvn

Rev

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

// Author: J. Andreas Bærentzen,
// Created: Wed Feb 13 11:00:1

//#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> >;
}