FastLED 3.10.8
Loading...
Searching...
No Matches

◆ sampleBilinear()

CRGB fl::sampleBilinear ( const CRGB * grid,
const XYMap & xyMap,
float x,
float y )

Bilinear interpolation sample from a 2D CRGB grid.

Definition at line 18 of file sample.cpp.hpp.

18 {
19 int x0 = static_cast<int>(x);
20 int y0 = static_cast<int>(y);
21 int x1 = min(x0 + 1, static_cast<int>(xyMap.getWidth()) - 1);
22 int y1 = min(y0 + 1, static_cast<int>(xyMap.getHeight()) - 1);
23
24 // Clamp x0 and y0 to valid range
25 x0 = max(0, min(x0, static_cast<int>(xyMap.getWidth()) - 1));
26 y0 = max(0, min(y0, static_cast<int>(xyMap.getHeight()) - 1));
27
28 float fx = x - x0;
29 float fy = y - y0;
30
31 // Get four neighboring pixels
32 CRGB c00 = grid[xyMap.mapToIndex(x0, y0)];
33 CRGB c10 = grid[xyMap.mapToIndex(x1, y0)];
34 CRGB c01 = grid[xyMap.mapToIndex(x0, y1)];
35 CRGB c11 = grid[xyMap.mapToIndex(x1, y1)];
36
37 // Interpolate
38 CRGB c0 = CRGB::blend(c00, c10, static_cast<u8>(fx * 255));
39 CRGB c1 = CRGB::blend(c01, c11, static_cast<u8>(fx * 255));
40 return CRGB::blend(c0, c1, static_cast<u8>(fy * 255));
41}
fl::XYMap xyMap
unsigned char u8
Definition stdint.h:131
constexpr common_type_t< T, U > max(T a, U b) FL_NO_EXCEPT
Definition math.h:75
FL_DISABLE_WARNING_PUSH U constexpr common_type_t< T, U > min(T a, U b) FL_NO_EXCEPT
Definition math.h:71
static CRGB blend(const CRGB &p1, const CRGB &p2, fract8 amountOfP2) FL_NO_EXCEPT
Definition crgb.cpp.hpp:55
Representation of an 8-bit RGB pixel (Red, Green, Blue)
Definition crgb.h:38

References fl::CRGB::blend(), FL_NO_EXCEPT, max(), min(), x, xyMap, and y.

Referenced by sample().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: