2023-11-30 00:18:46 +05:30
|
|
|
/*
|
|
|
|
Digital Differential Analyzer (DDA) algorithm for drawing a triangle.
|
|
|
|
Code from Computer Graphics (SPPU - Second Year - Computer Engineering - Content) repository on KSKA Git: https://git.kska.io/sppu-se-comp-codes/CG
|
|
|
|
*/
|
|
|
|
|
|
|
|
// BEGINNING OF CODE
|
2023-09-29 23:42:20 +05:30
|
|
|
#include <iostream>
|
|
|
|
#include <graphics.h>
|
|
|
|
using namespace std;
|
|
|
|
|
|
|
|
class triangle_maker {
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
int gd=DETECT, gm;
|
|
|
|
float x1, y1, x2, y2, x, y;
|
|
|
|
float len, dx, dy, xin, yin;
|
|
|
|
|
|
|
|
// Function to make edges of triangle
|
|
|
|
void edge(float x1, float y1, float x2, float y2){
|
|
|
|
|
|
|
|
initgraph(&gd, &gm, NULL);
|
|
|
|
|
|
|
|
dx=x2-x1;
|
|
|
|
dy=y2-y1;
|
|
|
|
|
|
|
|
if (abs(dx)>=abs(dy)) {
|
|
|
|
len=abs(dx);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
len=abs(dy);
|
|
|
|
}
|
|
|
|
|
|
|
|
xin=dx/len;
|
|
|
|
yin=dy/len;
|
|
|
|
|
|
|
|
x=x1;
|
|
|
|
y=y1;
|
|
|
|
|
|
|
|
int i=0;
|
|
|
|
while (i<=len) {
|
|
|
|
putpixel(round(x),round(y),WHITE);
|
|
|
|
x=x+xin;
|
|
|
|
y=y+yin;
|
|
|
|
i++;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
int main(){
|
|
|
|
|
|
|
|
float X1,X2,X3,Y1,Y2,Y3;
|
|
|
|
triangle_maker obj_triangle;
|
|
|
|
|
|
|
|
cout<<"Enter X coordinate for first edge:\t";
|
|
|
|
cin>>X1;
|
|
|
|
cout<<"Enter Y coordinate for first edge:\t";
|
|
|
|
cin>>Y1;
|
|
|
|
cout<<"Enter X coordinate for second edge:\t";
|
|
|
|
cin>>X2;
|
|
|
|
cout<<"Enter Y coordinate for second edge:\t";
|
|
|
|
cin>>Y2;
|
|
|
|
cout<<"Enter X coordinate for third edge:\t";
|
|
|
|
cin>>X3;
|
|
|
|
cout<<"Enter Y coordinate for third edge:\t";
|
|
|
|
cin>>Y3;
|
|
|
|
|
|
|
|
obj_triangle.edge(X1,Y1,X2,Y2);
|
|
|
|
obj_triangle.edge(X2,Y2,X3,Y3);
|
|
|
|
obj_triangle.edge(X3,Y3,X1,Y1);
|
|
|
|
delay(50000);
|
|
|
|
closegraph();
|
|
|
|
return 0;
|
|
|
|
}
|
2023-11-30 00:18:46 +05:30
|
|
|
// END OF CODE
|