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 66 of file bilinear_expansion.cpp.

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

Referenced by bilinearExpandArbitrary().

+ Here is the caller graph for this function: