summaryrefslogtreecommitdiffstats
path: root/src/LinearInterpolation.h
blob: 800dc1607286b8c91d0426647f1186b4253dd9b1 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62

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