21X505 Problem Sheet3
21X505 Problem Sheet3
21X505 Problem Sheet3
#include<windows.h>
#include<stdlib.h>
#include <GL/glut.h>
#include <cmath>
x_inc = dx / (float)steps;
y_inc = dy / (float)steps;
glPointSize(2.0);
glColor3f(1.0, 9.0, 0.0);
glBegin(GL_POINTS);
for(int i = 0; i <= steps; i++) {
glVertex2i((int)x, (int)y);
x += x_inc;
y += y_inc;
}
glEnd();
}
void display() {
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_LINES);
glVertex3f(0.0f,100.0f,100.0f);
glVertex3f(0.0f,-100.0f,-100.0f);
glEnd();
glBegin(GL_LINES);
glVertex3f(100.0f,0.0f,100.0f);
glVertex3f(-100.0f,0.0f,-100.0f);
glEnd();
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(-100, 100, -100, 100);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glFlush();
}
2. Consider the line from (10, 4) to (20, 12), use DDA line algorithm to
rasterize this line with negative slope. Evaluate and tabulate all the steps
involved.
#include <windows.h>
#include <GL/glut.h>
#include <cmath>
x_inc = dx / (float)steps;
y_inc = -(dy / (float)steps);
glPointSize(2.0);
glColor3f(1.0, 9.0, 0.0);
glBegin(GL_POINTS);
glEnd();
}
void display() {
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_LINES);
glVertex3f(0.0f,100.0f,100.0f);
glVertex3f(0.0f,-100.0f,-100.0f);
glEnd();
glBegin(GL_LINES);
glVertex3f(100.0f,0.0f,100.0f);
glVertex3f(-100.0f,0.0f,-100.0f);
glEnd();
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(-100, 100, -100, 100);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glFlush();
}
3. If a line is drawn from (2, 3) to (6, 15) with use of DDA. How many
points will be needed to generate such line?
#include<windows.h>
#include<stdlib.h>
#include <GL/glut.h>
#include <cmath>
#include <iostream>
x_inc = dx / (float)steps;
y_inc = dy / (float)steps;
glPointSize(2.0);
glColor3f(1.0, 9.0, 0.0);
int count=0;
glBegin(GL_POINTS);
for(int i = 0; i <= steps; i++) {
glVertex2i((int)x, (int)y);
x += x_inc;
y += y_inc;
std::cout<<round(x)<<" , "<<round(y)<<std::endl;
count+=1;
}
std::cout<<"we need "<<count<<" points to generate this line"<<
std::endl;
glEnd();
}
void display() {
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_LINES);
glVertex3f(0.0f,100.0f,100.0f);
glVertex3f(0.0f,-100.0f,-100.0f);
glEnd();
glBegin(GL_LINES);
glVertex3f(100.0f,0.0f,100.0f);
glVertex3f(-100.0f,0.0f,-100.0f);
glEnd();
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(-50, 50, -50, 50);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
dda_line(2,3,6,15);
glFlush();
}
#include<windows.h>
#include<stdlib.h>
#include <GL/glut.h>
#include <cmath>
#include <iostream>
x_inc = dx / (float)steps;
y_inc = dy / (float)steps;
glPointSize(2.0);
glColor3f(1.0, 9.0, 0.0);
int count=0;
glBegin(GL_POINTS);
for(int i = 0; i <= steps; i++) {
glVertex2i((int)x, (int)y);
x += x_inc;
y += y_inc;
std::cout<<round(x)<<" , "<<round(y)<<std::endl;
count+=1;
}
std::cout<<"we need "<<count<<" points to generate this line"<<
std::endl;
glEnd();
}
void display() {
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_LINES);
glVertex3f(0.0f,100.0f,100.0f);
glVertex3f(0.0f,-100.0f,-100.0f);
glEnd();
glBegin(GL_LINES);
glVertex3f(100.0f,0.0f,100.0f);
glVertex3f(-100.0f,0.0f,-100.0f);
glEnd();
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(-100, 100, -100, 100);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
dda_line(1,7,11,17);
glFlush();
}