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
 | 
						|
);
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 |