Assignment 2 CG
Assignment 2 CG
DDA:
#include <GL/freeglut.h>
#include <GL/gl.h>
#include <iostream>
glColor3f(1.0,1.0,1.0);
glBegin(GL_POINTS);
glVertex2f(x,y);
glEnd();
float dx=xe-xs;
float dy=ye-ys;
int steps;
if(abs(dx)>abs(dy)){
steps=abs(dx);
else{
steps=abs(dy);
float xinc=dx/(float)steps;
float yinc=dy/(float)steps;
float x=xs;
float y=ys;
displaypoint(x,y);
for(int i=0;i<steps;i++){
x=x+xinc;
y=y+yinc;
displaypoint(x,y);
glFlush();
}
float dx=xe-xs;
float dy=ye-ys;
int steps;
if(abs(dx)>abs(dy)){
steps=abs(dx);
else{
steps=abs(dy);
float xinc=dx/(float)steps;
float yinc=dy/(float)steps;
float x=xs;
float y=ys;
displaypoint(x,y);
for(int i=0;i<steps;i++){
x=x+xinc;
y=y+yinc;
if(i%5==0){
displaypoint(x,y);
glFlush();
float dx=xe-xs;
float dy=ye-ys;
int steps;
if(abs(dx)>abs(dy)){
steps=abs(dx);
}
else{
steps=abs(dy);
float xinc=dx/(float)steps;
float yinc=dy/(float)steps;
float x=xs;
float y=ys;
for(int i=0;i<=steps;i++){
x=x+xinc;
y=y+yinc;
if(i%15!=0){
displaypoint(x,y);
glFlush();
glColor3f(1.0,1.0,1.0);
glPointSize(2);
glBegin(GL_POINTS);
glVertex2f(x,y);
glEnd();
float dx=xe-xs;
float dy=ye-ys;
int steps;
if(abs(dx)>abs(dy)){
steps=abs(dx);
else{
steps=abs(dy);
}
float xinc=dx/(float)steps;
float yinc=dy/(float)steps;
float x=xs;
float y=ys;
for(int i=0;i<steps;i++){
x=x+xinc;
y=y+yinc;
displaypoint1(x,y);
glFlush();
void renderFunction()
glClear(GL_COLOR_BUFFER_BIT);
SimpleLine(-250,0,250,0);
SimpleLine(0,-250,0,250);
SimpleLine(110,110,220,220);
DottedLine(-110,110,-220,220);
DashedLine(-110,-110,-220,-220);
SolidLine(110,-110,220,-220);
glFlush();
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE);
glutInitWindowSize(500,500);
glutInitWindowPosition(100,100);
glutCreateWindow("DDA Line");
glutDisplayFunc(renderFunction);
glutMainLoop();
return 0;
Bresenham:
#include <GL/freeglut.h>
#include <GL/gl.h>
#include <iostream>
glColor3f(1.0,1.0,1.0);
glBegin(GL_POINTS);
glVertex2f(x,y);
glEnd();
int p;
int dx=abs(xe-xs);
int dy=abs(ye-ys);
int x=xs;
int y=ys;
int xinc=1;
int yinc=1;
if(xs>xe){
xinc=-1;
}
if(ys>ye){
yinc=-1;
displaypoint(x,y);
if(dx==0){
for(int i=0;i<dy;i++){
y=y+yinc;
displaypoint(x,y);
return;
if(dy==0){
for(int i=0;i<dx;i++){
x=x+xinc;
displaypoint(x,y);
return;
if(dx>dy){
p=2*dy-dx;
for(int i=0;i<dx;i++){
if(p>0){
y=y+yinc;
p=p+2*(dy-dx);
}else{
p=p+2*dy;
x=x+xinc;
displaypoint(x,y);
}else{
p=2*dx-dy;
for(int i=0;i<dy;i++){
if(p>0){
x=x+xinc;
p=p+2*(dx-dy);
}else{
p=p+2*dx;
y=y+yinc;
displaypoint(x,y);
int p;
int dx=abs(xe-xs);
int dy=abs(ye-ys);
int x=xs;
int y=ys;
int xinc=1;
int yinc=1;
if(xs>xe){
xinc=-1;
if(ys>ye){
yinc=-1;
displaypoint(x,y);
if(dx==0){
for(int i=0;i<dy;i++){
y=y+yinc;
if(i%3==0){
displaypoint(x,y);
return;
if(dy==0){
for(int i=0;i<dx;i++){
x=x+xinc;
if(i%3==0){
displaypoint(x,y);
return;
if(dx>dy){
p=2*dy-dx;
for(int i=0;i<dx;i++){
if(p>0){
y=y+yinc;
p=p+2*(dy-dx);
}else{
p=p+2*dy;
x=x+xinc;
if(i%3==0){
displaypoint(x,y);
}else{
p=2*dx-dy;
for(int i=0;i<dy;i++){
if(p>0){
x=x+xinc;
p=p+2*(dx-dy);
}else{
p=p+2*dx;
y=y+yinc;
if(i%3==0){
displaypoint(x,y);
}
int p;
int dx=abs(xe-xs);
int dy=abs(ye-ys);
int x=xs;
int y=ys;
int xinc=1;
int yinc=1;
if(xs>xe){
xinc=-1;
if(ys>ye){
yinc=-1;
displaypoint(x,y);
if(dx==0){
for(int i=0;i<dy;i++){
y=y+yinc;
if(i%15!=0){
displaypoint(x,y);
return;
if(dy==0){
for(int i=0;i<dx;i++){
x=x+xinc;
if(i%15!=0){
displaypoint(x,y);
}
}
return;
if(dx>dy){
p=2*dy-dx;
for(int i=0;i<dx;i++){
if(p>0){
y=y+yinc;
p=p+2*(dy-dx);
}else{
p=p+2*dy;
x=x+xinc;
if(i%15!=0){
displaypoint(x,y);
}else{
p=2*dx-dy;
for(int i=0;i<dy;i++){
if(p>0){
x=x+xinc;
p=p+2*(dx-dy);
}else{
p=p+2*dx;
y=y+yinc;
if(i%15!=0){
displaypoint(x,y);
glPointSize(2);
glBegin(GL_POINTS);
glVertex2f(x,y);
glEnd();
int p;
int dx=abs(xe-xs);
int dy=abs(ye-ys);
int x=xs;
int y=ys;
int xinc=1;
int yinc=1;
if(xs>xe){
xinc=-1;
if(ys>ye){
yinc=-1;
displaypoint1(x,y);
if(dx==0){
for(int i=0;i<dy;i++){
y=y+yinc;
displaypoint1(x,y);
return;
if(dy==0){
for(int i=0;i<dx;i++){
x=x+xinc;
displaypoint1(x,y);
return;
}
if(dx>dy){
p=2*dy-dx;
for(int i=0;i<dx;i++){
if(p>0){
y=y+yinc;
p=p+2*(dy-dx);
}else{
p=p+2*dy;
x=x+xinc;
displaypoint1(x,y);
}else{
p=2*dx-dy;
for(int i=0;i<dy;i++){
if(p>0){
x=x+xinc;
p=p+2*(dx-dy);
}else{
p=p+2*dx;
y=y+yinc;
displaypoint1(x,y);
void renderFunction()
glClear(GL_COLOR_BUFFER_BIT);
BLA(-250,0,250,0);
BLA(0,-250,0,250);
BLA(110,110,220,220);
dotted_BLA(-110,110,-220,220);
dashed_BLA(-110,-110,-220,-220);
solid_BLA(110,-110,220,-220);
glFlush();
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE);
glutInitWindowSize(500,500);
glutInitWindowPosition(100,100);
glutCreateWindow("BLA");
glutDisplayFunc(renderFunction);
glutMainLoop();
return 0;
#include <GL/freeglut.h>
#include <GL/gl.h>
#include <iostream>
using namespace std;
int ch ;
glBegin(GL_POINTS);
glVertex2f(x, y);
glEnd();
float dx = xe - xs;
float dy = ye - ys;
int steps;
float x = xs;
float y = ys;
displaypoint(x, y);
x += xinc;
y += yinc;
displaypoint(x, y);
glFlush();
float dx = xe - xs;
float dy = ye - ys;
int steps;
float x = xs;
float y = ys;
displaypoint(x, y);
x += xinc;
y += yinc;
if (i % 5 == 0) {
displaypoint(x, y);
glFlush();
float dx = xe - xs;
float dy = ye - ys;
int steps;
float x = xs;
float y = ys;
x += xinc;
y += yinc;
if (i % 15 != 0) {
displaypoint(x, y);
glFlush();
}
glLineWidth(2.0);
float dx = xe - xs;
float dy = ye - ys;
int steps;
float x = xs;
float y = ys;
x += xinc;
y += yinc;
displaypoint(x, y);
glFlush();
static int pt = 0;
if (pt == 0) {
startX = x;
startY = 500 - y;
pt = 1;
else {
endX = x;
endY = 500 - y;
switch (ch) {
case 1:
break;
case 2:
DottedLine(startX, startY, endX, endY);
break;
case 3:
break;
default:
break;
pt = 0;
glFlush();
switch (key) {
case 's':
ch = 1;
glutMouseFunc(mouseHandler);
break;
case 'd':
ch = 2;
glutMouseFunc(mouseHandler);
break;
case 'D':
ch = 3;
glutMouseFunc(mouseHandler);
break;
default:
ch = 0;
glutMouseFunc(mouseHandler);
break;
}
glutPostRedisplay();
void renderFunction() {
glClear(GL_COLOR_BUFFER_BIT);
glutKeyboardFunc(keyboardHandler);
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE);
glutInitWindowSize(500, 500);
glutInitWindowPosition(100, 100);
glutCreateWindow("BLA");
glutDisplayFunc(renderFunction);
glutMouseFunc(mouseHandler);
glutKeyboardFunc(keyboardHandler);
glutMainLoop();
return 0;