Untitled
Anonymous
plain_text
03/04/2026 6:56 AM
2.2 KB
12
Indexable
#include <GL/glut.h>
#include <stdlib.h>
#include <math.h>
/* DDA */
void drawLineDDA(int x1, int y1, int x2, int y2)
{
float dx = x2 - x1;
float dy = y2 - y1;
int steps = abs(dx) > abs(dy) ? abs(dx) : abs(dy);
float xInc = dx / steps;
float yInc = dy / steps;
float x = x1, y = y1;
glBegin(GL_POINTS);
for(int i = 0; i <= steps; i++)
{
glVertex2i(round(x), round(y));
x += xInc;
y += yInc;
}
glEnd();
}
/* Bresenham */
void drawLineBresenham(int x1, int y1, int x2, int y2)
{
int dx = abs(x2 - x1), dy = abs(y2 - y1);
int sx = (x1 < x2) ? 1 : -1;
int sy = (y1 < y2) ? 1 : -1;
int err = dx - dy;
glBegin(GL_POINTS);
while (1)
{
glVertex2i(x1, y1);
if (x1 == x2 && y1 == y2) break;
int e2 = 2 * err;
if (e2 > -dy) { err -= dy; x1 += sx; }
if (e2 < dx) { err += dx; y1 += sy; }
}
glEnd();
}
void display()
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0, 0, 1); // BLUE
// Vertical stem of K (DDA)
drawLineDDA(150, 200, 150, 300);
// Upper diagonal (Bresenham)
drawLineBresenham(150, 300, 200, 250);
// Lower diagonal (Bresenham)
drawLineBresenham(150, 200, 200, 250);
glFlush();
}
void init()
{
glClearColor(1,1,1,1);
glPointSize(2);
gluOrtho2D(0,400,0,400);
}
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(400,400);
glutCreateWindow("Letter K - Blue");
init();
glutDisplayFunc(display);
glutMainLoop();
}Editor is loading...
Leave a Comment