Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/tashi-2004/2d-line-drawing-algorithms
This repo showcases 2D line drawing using Bresenham, Midpoint, and Parametric algorithms with SDL. It includes features for clearing the screen 🎨, drawing pixels and markers 🟡, and generating random lines. Press 1, 2, or 3 to draw lines in red, green, or blue 🌈. Press 4 to clear the screen and display a starry sky ✨.
https://github.com/tashi-2004/2d-line-drawing-algorithms
2d-graphics 2d-line-drawing-algorithms-with-sdl algorithms bresenham-algorithm cplusplus graphics-programming midpoint-algorithm parametric sdl2
Last synced: about 1 month ago
JSON representation
This repo showcases 2D line drawing using Bresenham, Midpoint, and Parametric algorithms with SDL. It includes features for clearing the screen 🎨, drawing pixels and markers 🟡, and generating random lines. Press 1, 2, or 3 to draw lines in red, green, or blue 🌈. Press 4 to clear the screen and display a starry sky ✨.
- Host: GitHub
- URL: https://github.com/tashi-2004/2d-line-drawing-algorithms
- Owner: tashi-2004
- Created: 2024-07-25T21:36:35.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2024-09-03T12:04:19.000Z (2 months ago)
- Last Synced: 2024-09-29T12:22:58.605Z (about 2 months ago)
- Topics: 2d-graphics, 2d-line-drawing-algorithms-with-sdl, algorithms, bresenham-algorithm, cplusplus, graphics-programming, midpoint-algorithm, parametric, sdl2
- Language: C++
- Homepage:
- Size: 35.2 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 2D-Line-Drawing-Algorithms-VectorLineRenderer
This project demonstrates the implementation of three fundamental line drawing algorithms in 2D space using SDL:
- Bresenham Line Algorithm
- Midpoint Line Algorithm
- Parametric Line Algorithm## Project Structure
The project consists of two main files:
- `Algo.cpp`: Contains the `main` function which sets up the SDL environment and handles rendering and input.
- `Header.h`: Contains all the function implementations for line drawing, pixel drawing, clearing the back buffer, and handling input.## Functionality
### Initialization
The program initializes SDL, creates a window and a renderer, and sets up the initial screen.### Clearing the Back Buffer
The `ClearBackBuffer` function clears the screen to a specified color.### Drawing Pixels
The `DrawPixel` function draws a single pixel at a given position with a specified color.### Drawing Markers
The `DrawMarker` function draws a square marker of a specified size and color at a given position.### Line Drawing Algorithms
The project implements three line drawing algorithms:
- **Bresenham Line Algorithm:** Efficiently draws lines using integer calculations.
- **Midpoint Line Algorithm:** Draws lines by determining the midpoint between two points.
- **Parametric Line Algorithm:** Draws lines using parametric equations.### Random Line Drawing
When key 1, 2, or 3 are pressed, the program draws a random line of a specified color (red, green, or blue/purple) on the screen and marks the start and end points with yellow pixels.
### Sky of Stars
When key 4 is pressed, all lines are cleared, and the screen is filled with randomly placed white pixels, simulating a sky full of stars.
### Final Output
### Video
https://github.com/user-attachments/assets/48517f9a-f6b5-4513-8bb7-ca90621c21b9
### Handling User Input
The `HandleInput` function captures keyboard input to draw lines or clear the screen based on the user's key presses.## Setup
To set up the SDL library in Visual Studio, follow the instructions provided in this [YouTube tutorial](https://youtu.be/13AEnd8XB70?si=IXO8L4JBEZiY1018).
## How to Run
1. Clone this repository.
2. Set up SDL in your development environment.
3. Compile and run `Algo.cpp`.## Contributors
- M.Tashfeen Abbasi
- [Laiba Mazhar](https://github.com/laiba-mazhar)## Contact
For any questions or suggestions, feel free to contact at [[email protected]]
---
Enjoy experimenting with 2D line drawing algorithms!