FDF
FDF is a graphics programming project at 42 that focuses on building a 3D wireframe map renderer using a 2D graphics library. The program reads a height map from a file and projects it into a three-dimensional representation displayed in an interactive window. This project introduces fundamental concepts of computer graphics, including coordinate systems, projections, transformations, and event-driven rendering.
Challenge
The main challenge of FDF is transforming raw numerical data into a visually accurate and interactive 3D representation. This involves parsing map files with varying dimensions, managing coordinate scaling, and implementing projection algorithms such as isometric projection. Handling rotations, zooming, translations, and color gradients while maintaining performance and visual clarity adds further complexity. Working within the constraints of a low-level graphics library also requires careful memory and event management.
Solution
To solve these challenges, I implemented a structured rendering pipeline that converts map data into 3D points and projects them onto a 2D plane. An isometric projection was used to provide depth perception, combined with scaling and translation to properly fit the map within the window. Line-drawing algorithms connect points to form the wireframe grid, while keyboard and mouse hooks allow real-time interaction such as zooming, rotating, and moving the camera. The codebase is modular, separating file parsing, transformations, rendering, and event handling.
Impact
The FDF project significantly strengthened my understanding of computer graphics fundamentals and mathematical transformations. It improved my ability to work with low-level rendering APIs, manage real-time user input, and optimize drawing logic. This project also reinforced clean code organization and problem-solving skills, laying a solid foundation for more advanced graphics or game development work.
Deliverables
A wireframe 3D map renderer written in C
Support for isometric projection
Efficient line-drawing and rendering logic
Robust file parsing and error handling
Clean, modular, and norm-compliant code




