61 lines
1.8 KiB
C
61 lines
1.8 KiB
C
|
|
// LinearInterpolation.h
|
|
|
|
// Declares methods for linear interpolation over 1D, 2D and 3D arrays
|
|
|
|
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
|
|
// 2D and 3D Interpolation is optimized by precalculating the ratios into static-sized arrays
|
|
// These arrays enforce a max size of the dest array, but the limits are settable here:
|
|
const int MAX_INTERPOL_SIZEX = 256; ///< Maximum X-size of the interpolated array
|
|
const int MAX_INTERPOL_SIZEY = 512; ///< Maximum Y-size of the interpolated array
|
|
const int MAX_INTERPOL_SIZEZ = 256; ///< Maximum Z-size of the interpolated array
|
|
|
|
|
|
|
|
|
|
|
|
/** Puts linearly interpolated values from one array into another array. 1D version */
|
|
void LinearInterpolate1DArray(
|
|
float * a_Src, ///< Src array
|
|
int a_SrcSizeX, ///< Count of the src array
|
|
float * a_Dst, ///< Src array
|
|
int a_DstSizeX ///< Count of the dst array
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
/** Puts linearly interpolated values from one array into another array. 2D version */
|
|
void LinearInterpolate2DArray(
|
|
float * a_Src, ///< Src array, [x + a_SrcSizeX * y]
|
|
int a_SrcSizeX, int a_SrcSizeY, ///< Count of the src array, in each direction
|
|
float * a_Dst, ///< Dst array, [x + a_DstSizeX * y]
|
|
int a_DstSizeX, int a_DstSizeY ///< Count of the dst array, in each direction
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
/** Puts linearly interpolated values from one array into another array. 3D version */
|
|
void LinearInterpolate3DArray(
|
|
float * a_Src, ///< Src array, [x + a_SrcSizeX * y + a_SrcSizeX * a_SrcSizeY * z]
|
|
int a_SrcSizeX, int a_SrcSizeY, int a_SrcSizeZ, ///< Count of the src array, in each direction
|
|
float * a_Dst, ///< Dst array, [x + a_DstSizeX * y + a_DstSizeX * a_DstSizeY * z]
|
|
int a_DstSizeX, int a_DstSizeY, int a_DstSizeZ ///< Count of the dst array, in each direction
|
|
);
|
|
|
|
|
|
|
|
|