https://github.com/anonxarka/computer-graphics-cse423-bracu
https://github.com/anonxarka/computer-graphics-cse423-bracu
brac bracu bracu-cse bracu-cse-lab bracu-cse423 bracu-cse423-computer-graphics bracu-cse423-computer-graphics-lab bracucse bracucse423 computer-graphics cse423 cse423-bracu cse423-lab midpoint-circle-algorithm midpoint-line-algorithm opengl python python3
Last synced: about 1 month ago
JSON representation
- Host: GitHub
- URL: https://github.com/anonxarka/computer-graphics-cse423-bracu
- Owner: AnonXarkA
- Created: 2025-06-07T09:34:14.000Z (12 months ago)
- Default Branch: main
- Last Pushed: 2025-06-07T10:07:33.000Z (12 months ago)
- Last Synced: 2025-06-22T01:02:37.379Z (12 months ago)
- Topics: brac, bracu, bracu-cse, bracu-cse-lab, bracu-cse423, bracu-cse423-computer-graphics, bracu-cse423-computer-graphics-lab, bracucse, bracucse423, computer-graphics, cse423, cse423-bracu, cse423-lab, midpoint-circle-algorithm, midpoint-line-algorithm, opengl, python, python3
- Language: Python
- Homepage:
- Size: 722 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# COMPUTER-GRAPHICS-CSE423-BRACU
# Lab Assignment 1
Ans: ⚡ LAB 1
Task 1: Drawing Pixels
You are supposed to draw 50 pixels (coordinate points). For this you need to generate
100 random values (50 x - coordinates and 50 y - coordinates). You do not need to join
any pixels for this task.
Task 2: House Building
You are to draw a House using the base primitives: points, lines, or triangles. You can
use GL_POINTS, GL_LINES or GL_TRIANGLES for designing this house. A diagram
has been provided as an example. You can modify the house design to your liking.
[](https://imgbb.com/)
Task 3: Student ID
Show your Student ID where each digit should be of different colors.
Ans: ⚡ LAB 1
|
|
# Lab Assignment 02
Ans: ⚡ LAB 2
🔭 Lab Assignment 2: Midpoint Line Algorithm & 8-Way Symmetry
This assignment introduces a more efficient line drawing method, the Midpoint Line Algorithm, and the concept of 8-way symmetry to handle lines of any slope.
💡 Topic Overview
The Midpoint Line Algorithm is an incremental algorithm that uses only integer arithmetic, making it significantly faster than the DDA algorithm. The core challenge is to write a single, robust function that can draw a line in any of the 8 possible zones by converting its coordinates to Zone 0, performing the calculations, and then converting them back to the original zone.
⚙️ Algorithm Details
The algorithm decides between the two possible next pixels, East (E) or North-East (NE), by checking the position of the midpoint (M) between them relative to the true line path. This avoids floating-point calculations and relies on a simple decision parameter.
📝 Activity Task
Objective: Draw the last two digits of your student ID.
Implementation: You must implement the Midpoint Line Algorithm with 8-way symmetry to handle all the lines required to draw the two digits.
Example Output:
For a student ID ending in 06, the output should look like this:
Ans: ⚡ LAB 2
# Lab Assignment 03
Ans: ⚡ LAB 3
🎨 Lab Assignment 3: Midpoint Circle Algorithm
This lab builds upon the concepts of the Midpoint Algorithm and 8-way symmetry, applying them to efficiently draw circles.
💡 Topic Overview
Similar to the line algorithm, the Midpoint Circle Algorithm uses a decision parameter and integer arithmetic to determine the closest pixel to the true circle path at each step. By calculating the pixels for just one octant (1/8th of the circle), we can use the 8-way symmetry of a circle to plot the points for the other seven octants without re-calculation, making the process highly efficient.
📝 Activity Task
Objective: Draw a flower-like pattern using multiple intersecting circles.
Implementation: Implement the Midpoint Circle Drawing algorithm. The final output should replicate the provided image, which consists of one large circle and eight smaller circles forming a rosette pattern.
Example Output:
Ans: ⚡ LAB 3
# PROJECT
# Facial Expression Simulator
Ans: ⚡ Project
An interactive OpenGL program that displays various facial expressions with animation capabilities.
## Features
- Displays 6 different facial expressions:
- Happy 😊
- Sad 😢
- Crying 😭
- Neutral 😐
- Laughing 😂
- Smirk 😏
- Includes an animated rotating "Joker Face" (option 7)
- Uses midpoint algorithms for drawing lines and circles
- Interactive menu system
## Requirements
- Python 3.x
- PyOpenGL
- NumPy
- FreeGLUT (for Linux/Mac) or equivalent OpenGL utilities
When prompted, enter a number (1-7) corresponding to the emotion you want to display:
################
Facial expression based on current emotion:
1) Happy
2) Sad
3) Crying
4) Neutral
5) Laughing
6) Smirk
7) Rotating Joker Face trying to more laugh (Animated)
What's your emotion right now? Enter:
## Technical Details:
Uses midpoint line and circle drawing algorithms
Implements zone conversion for line drawing in all octants
Includes matrix transformations for rotation animation
Built with:
OpenGL for rendering
Ans: ⚡ Project
GLUT for window management
NumPy for matrix operations