1.0 KiB
1.0 KiB
math_example
Basic pixel → 3D vertex projection. Each pixel's brightness is used as depth in a pinhole back-projection:
x = (u - cx) / fx * depth
y = (v - cy) / fy * depth
z = depth
Output is a triangulated OBJ mesh. Bright pixels project far from the camera, dark pixels stay close. Gives a height-map-like 3D surface from any image.
Build
make
Needs only the C++ stdlib and stb_image from ../shader_example/.
Run
./math # 128x128 sine-wave test pattern
./math ../shader_example/frame1.jpg # load an image
./math ../shader_example/frame1.jpg 2 # step=2 (denser mesh)
./math ../shader_example/frame1.jpg 4 90 # step=4, FOV 90°
Output: out.obj — open in Blender (File → Import → Wavefront) or MeshLab.
What it's for
This is the math layer that sits between the camera and the LoRa transmitter. Instead of sending raw pixels, you project them to vertices, run motion detection in that 3D space, and transmit only the diff vertices over LoRa.