FastLED 3.9.15
Loading...
Searching...
No Matches
splat.cpp
Go to the documentation of this file.
1
2#include "fl/tile2x2.h"
3#include "fl/splat.h"
4#include "fl/math.h"
5
6namespace fl {
7
8static u8 to_uint8(float f) {
9 // convert to [0..255] range
10 u8 i = static_cast<u8>(f * 255.0f + .5f);
11 return MIN(i, 255);
12}
13
15 // 1) collect values.
16 float x = xy.x;
17 float y = xy.y;
18
19 // 2) integer cell indices
20 i16 cx = static_cast<i16>(floorf(x));
21 i16 cy = static_cast<i16>(floorf(y));
22
23 // 3) fractional offsets in [0..1)
24 float fx = x - cx;
25 float fy = y - cy;
26
27 // 4) bilinear weights
28 float w_ll = (1 - fx) * (1 - fy); // lower‑left
29 float w_lr = fx * (1 - fy); // lower‑right
30 float w_ul = (1 - fx) * fy; // upper‑left
31 float w_ur = fx * fy; // upper‑right
32
33 // 5) build Tile2x2_u8 anchored at (cx,cy)
34 Tile2x2_u8 out(vec2<u16>(cx, cy));
35 out.lower_left() = to_uint8(w_ll);
36 out.lower_right() = to_uint8(w_lr);
37 out.upper_left() = to_uint8(w_ul);
38 out.upper_right() = to_uint8(w_ur);
39
40 return out;
41}
42
43} // namespace
int y
Definition simple.h:93
int x
Definition simple.h:92
unsigned int xy(unsigned int x, unsigned int y)
u8 & lower_right()
Definition tile2x2.h:44
u8 & upper_right()
Definition tile2x2.h:45
u8 & lower_left()
Definition tile2x2.h:42
u8 & upper_left()
Definition tile2x2.h:43
#define MIN(a, b)
Definition math_macros.h:41
unsigned char u8
Definition int.h:17
Tile2x2_u8 splat(vec2f xy)
"Splat" as in "splat pixel rendering" takes a pixel value in float x,y coordinates and "splats" it in...
Definition splat.cpp:14
vec2< float > vec2f
Definition geometry.h:333
static u8 to_uint8(float f)
Definition splat.cpp:8
IMPORTANT!
Definition crgb.h:20