FastLED 3.9.15
Loading...
Searching...
No Matches

◆ bilinearInterpolate()

uint8_t fl::bilinearInterpolate ( uint8_t v00,
uint8_t v10,
uint8_t v01,
uint8_t v11,
uint16_t dx,
uint16_t dy )

Definition at line 67 of file bilinear_expansion.cpp.

68 {
69 uint16_t dx_inv = 256 - dx;
70 uint16_t dy_inv = 256 - dy;
71
72 uint32_t w00 = (uint32_t)dx_inv * dy_inv;
73 uint32_t w10 = (uint32_t)dx * dy_inv;
74 uint32_t w01 = (uint32_t)dx_inv * dy;
75 uint32_t w11 = (uint32_t)dx * dy;
76
77 uint32_t sum = v00 * w00 + v10 * w10 + v01 * w01 + v11 * w11;
78
79 // Normalize the result by dividing by 65536 (shift right by 16 bits),
80 // with rounding
81 uint8_t result = (uint8_t)((sum + 32768) >> 16);
82
83 return result;
84}

Referenced by bilinearExpandArbitrary().

+ Here is the caller graph for this function: