DDA.cpp
DDA.cpp
h>
#include<cmath>
#include <iostream>
Void myInit(void){
glClearColor(1.0,1.0,1.0,1.0);
glColor3f(0.0f,0.0f,0.0f);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(-320.0,320.0,-240.0,240.0);
If(x<0){
Return-1;
Else if(x==0){
Return 1;
Else{
Return 1;
If(x1==x2&&y1==y2){
glPointSize(2.0);
glBegin(GL_POINTS);
glVertex2i(x1, y1);
glEnd();
glFlush();
return;
Int dx = x2 – x1;
Int dy = y2 – y1;
Int length;
If(abs(dx)>abs(dy)){
Length=dx;
Else{
Length=dy;
Float DX = dx / float(length);
Float DY = dy / float(length);
Float x = x1;
Float y = y1;
Sign(DX);
Sign(DY);
glPointSize(2.0);
glBegin(GL_POINTS);
for (int I = 0; I <= length; i++) {
glVertex2i(round(x), round(y));
x +=(DX);
y +=(DY);
glEnd();
glFlush();
If(x1==x2&&y1==y2){
glPointSize(5.0);
glBegin(GL_POINTS);
glVertex2i(x1, y1);
glEnd();
glFlush();
return;
Int dx = x2 – x1;
Int dy = y2 – y1;
Int length;
If(abs(dx)>abs(dy)){
Length=dx;
Else{
Length=dy;
Float DX = dx / float(length);
Float DY = dy / float(length);
Float x = x1;
Float y = y1;
Sign(DX);
Sign(DY);
glPointSize(5.0);
glBegin(GL_POINTS);
glVertex2i(round(x), round(y));
x +=(DX);
y +=(DY);
}
glEnd();
glFlush();
If(x1==x2&&y1==y2){
glPointSize(2.0);
glBegin(GL_POINTS);
glVertex2i(x1, y1);
glEnd();
glFlush();
return;
Int dx = x2 – x1;
Int dy = y2 – y1;
Int length;
If(abs(dx)>abs(dy)){
Length=dx;
Else{
Length=dy;
Float DX = dx / float(length);
Float DY = dy / float(length);
Float x = x1;
Float y = y1;
Sign(DX);
Sign(DY);
glBegin(GL_POINTS);
if(int(x)%2==0&&int(y)%2==0){
glVertex2i(round(x), round(y));
}else{
glVertex2i(round(x), round(y));
X +=(DX);
Y +=(DY);
glEnd();
glFlush();
If(x1==x2&&y1==y2){
glPointSize(2.0);
glBegin(GL_POINTS);
glVertex2i(x1, y1);
glEnd();
glFlush();
return;
Int dx = x2 – x1;
Int dy = y2 – y1;
Int length;
If(abs(dx)>abs(dy)){
Length=dx;
Else{
Length=dy;
Float DX = dx / float(length);
Float DY = dy / float(length);
Float x = x1;
Float y = y1;
Sign(DX);
Sign(DY);
glPointSize(2.0);
glBegin(GL_POINTS);
int counter = 0;
if(counter<10){
glVertex2i(round(x), round(y));
counter++;
}else if(counter>=10&&counter<20){
glVertex2i(round(x), round(y));
counter++;
}else{
Counter=0;
X +=(DX);
Y +=(DY);
glEnd();
glFlush();
If(x1==x2&&y1==y2){
glPointSize(2.0);
glBegin(GL_POINTS);
glVertex2i(x1, y1);
glEnd();
glFlush();
return;
Int dx = x2 – x1;
Int dy = y2 – y1;
Int length;
If(abs(dx)>abs(dy)){
Length=dx;
Else{
Length=dy;
Float DX = dx / float(length);
Float DY = dy / float(length);
Float x = x1;
Float y = y1;
Sign(DX);
Sign(DY);
glPointSize(2.0);
glBegin(GL_POINTS);
int counter = 0;
if(counter<10||counter==15){
glColor3f(0.0, 0.0, 0.0);
glVertex2i(round(x), round(y));
counter++;
}else if(counter>=10&&counter<20&&counter!=15){
glVertex2i(round(x), round(y));
counter++;
}else{
Counter=0;
X +=(DX);
Y +=(DY);
glEnd();
glFlush();
Void plotAxis(){
ddaLine(-320,0,320,0);
ddaLine(0,-240,0,240);
Void display() {
glClear(GL_COLOR_BUFFER_BIT);
centreDottedddaLine(-250,-50,50,-250);
plotAxis();
switch(choice){
case 1:
break;
case 2:
break;
case 3:
break;
case 4:
Break;
Case 5:
centreDottedddaLine(-250,-50,50,-250);
break;
case 6:
break;
glFlush();
glutSwapBuffers();
Switch (option) {
Case 1:
Choice = 1;
Break;
Case 2:
Choice = 2;
Break;
Case 3:
Choice =3;
Break;
Case 4:
Choice=4;
Break;
Case 5:
Choice=5;
Break;
Case 6:
Choice=6;
Break;
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
glutInitWindowSize(640, 480);
myInit();
glutCreateMenu(processMenuEvents);
glutAddMenuEntry(“Boat”, 6);
glutAttachMenu(GLUT_RIGHT_BUTTON);
glutDisplayFunc(display);
glutMainLoop();
return 0;