52 const auto shape = array.
shape();
53 double x = std::max(0.0,std::min(shape.w-1.,p[0]));
54 double y = std::max(0.0,std::min(shape.h-1.,p[1]));
55 double z = std::max(0.0,std::min(shape.d-1.,p[2]));
56 int i = std::min(x,shape.w-2.);
57 int j = std::min(y,shape.h-2.);
58 int k = std::min(z,shape.d-2.);
60 for(
int dim : DIMS3 ) {
63 for(
int kk=0; kk<6; ++kk ) {
65 for(
int jj=0; jj<6; ++jj ) {
67 for(
int ii=0; ii<6; ++ii ) v[ii] = array(shape.clamp(i+ii-2,j+jj-2,k+kk-2))[dim];
73 }
else if( order == 4 ) {
75 for(
int kk=0; kk<4; ++kk ) {
77 for(
int jj=0; jj<4; ++jj ) {
79 for(
int ii=0; ii<4; ++ii ) hv[ii] = array(shape.clamp(i+ii-1,j+jj-1,k+kk-1))[dim];
86 printf(
"Unsupported order (order=%d)\n", order );
105 const auto shape = array.
shape();
106 double x = std::max(0.0,std::min(shape.w-1.,p[0]));
107 double y = std::max(0.0,std::min(shape.h-1.,p[1]));
108 double z = std::max(0.0,std::min(shape.d-1.,p[2]));
109 int i = std::min(x,shape.w-2.);
110 int j = std::min(y,shape.h-2.);
111 int k = std::min(z,shape.d-2.);
114 for(
int kk=0; kk<6; ++kk ) {
116 for(
int jj=0; jj<6; ++jj ) {
118 for(
int ii=0; ii<6; ++ii ) v[ii] = array(shape.clamp(i+ii-2,j+jj-2,k+kk-2));
124 }
else if( order == 4 ) {
126 for(
int kk=0; kk<4; ++kk ) {
128 for(
int jj=0; jj<4; ++jj ) {
130 for(
int ii=0; ii<4; ++ii ) v[ii] = array(shape.clamp(i+ii-1,j+jj-1,k+kk-1));
137 printf(
"Unsupported order (order=%d)\n", order );