#include<GL/glut.h>
#include<stdlib.h>
#include<math.h>
{
glBegin(GL_POINTS);
glVertex2i(px,
py);
glEnd();
}
void algoritmaDDA( int x1, int y1, int x2, int y2)
{
int dy = y2 - y1;
int dx = x2 - x1;
float t = (float)
0.5;
setPixel(x1,y1);
if (abs(dx) >
abs(dy))
{
float
m = (float) dy / (float) dx;
t +=
y1;
dx =
(dx<0) ? -1 : 1;
m
*=dx;
while
(x1 != x2)
{
x1 += dx;
t += m;
setPixel(x1, (int) t);
}
}
else {
float m =
(float) dx / (float) dy;
t += x1;
dy = (dy<0)
? -1 : 1;
m += dy;
while (y1 !=
y2)
{
y1 +=
dy;
t +=m;
setPixel((int)t,y1);
}
}
}
void lineMidpoint(int x0, int y0, int xEnd, int yEnd)
{
int dx = xEnd - x0;
int dy = y0 - yEnd;
int p = 2 * dy + dx;
int twoDy= 2 * dy;
int twoDyminusDx = 2
* (dy + dx);
int x, y;
x= x0;
y= y0;
setPixel(x,y);
while ( x<xEnd)
{
x++;
if (p<0)
{
y++;
p +=twoDyminusDx;
}
else {
p += twoDy;
}
setPixel(x,y);
}
}
void bresenham(int x1, int y1, int x2, int y2)
{
int dy = y2 - y1;
int dx = x2 - x1;
int stepx, stepy;
if(dy < 0)
{
dy = -dy; stepy = -1;
}
else
{
stepy = 1;
}
if(dx < 0) {
dx = -dx;
stepx = -1;
}
else
{
stepx = 1;
}
dy <<= 1;
dx <<= 1;
setPixel(x1,y1);
if (dx > dy)
{
int fraction = dy -
(dx >> 1);
while (x1 != x2)
{
if(fraction >= 0)
{
y1 += stepy;
fraction -= dx;
}
x1 += stepx;
fraction += dy;
setPixel(x1,y1);
}
}
else
{
int fraction = dx -
(dy >> 1);
while (y1 != y2)
{
if(fraction >= 0)
{
x1 += stepx;
fraction -= dy;
}
y1 += stepy;
fraction += dx;
setPixel(x1,y1);
}
}
}
void display()
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0,0.0,0.0);
glPointSize(4.0);
setPixel(100, 10);
setPixel(220, 180);
lineMidpoint(0,0,500,200);
glFlush();
}
void init(void)
{
glClearColor(1.0,1.0,1.0,0.0);
glMatrixMode(GL_PROJECTION);
gluOrtho2D(0.0,500.0,0.0,500.0);
}
main(int argc, char**argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(500,500);
glutInitWindowPosition(0,0);
glutCreateWindow("ICHA KHAIRUNNISA");
init();
glutDisplayFunc(display);
glutMainLoop();
}



0 komentar:
Posting Komentar