#include "stdafx.h"
static double X1 = 0.0;
static double Y1 = 0.0;
static double X2 = 10.0;
static double Y2 = 15.0;
void init(void) {
glClearColor(0.7,0.7,0.7,1.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0,20,0,20);
}
void keyboard(unsigned
char key, int x, int y) {
switch(key) {
case 27:
exit(0);
break;
case 'i':
Y2++;
glutPostRedisplay();
/*a glutPostRedisplay()
eljárás hatására a képernyõ újra
kirajzolódik (meghívódik a display függvény)*/
break;
case 'k':
Y2--;
glutPostRedisplay();
break;
case 'j':
X2--;
glutPostRedisplay();
break;
case 'l':
X2++;
glutPostRedisplay();
break;
default:
break;
}
}
int round(double mit)
{
return floor(mit+0.5);
}
void display(void) {
double m,y,x;
int X;
int Y;
glClear(GL_COLOR_BUFFER_BIT);
glLineWidth(2.0);
glBegin(GL_LINES);
glColor3f(1.0,0.0,0.0);
for(int i=0;i<20;i++) {
glVertex2i(0,i);
glVertex2i(20,i);
glVertex2i(i,0);
glVertex2i(i,20);
}
glEnd();
glPointSize(15.0);
glBegin(GL_POINTS);
glColor3d(0.0,0.0,1.0);
double dx = X2-X1;
double dy = Y2-Y1;
if(dx>=dy) {
m=dy/dx;
y=Y1;
for(X=X1;X<=X2;X++) {
Y=round(y);
glVertex2i(X,Y);
y+=m;
}
}
else {
m=dx/dy;
x=X1;
for(Y=Y1;Y<=Y2;Y++) {
X=round(x);
glVertex2i(X,Y);
x+=m;
}
}
glEnd();
glFlush();
}
int APIENTRY WinMain(HINSTANCE
hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(400,400);
glutInitWindowPosition(100,100);
glutCreateWindow("");
init();
glutDisplayFunc(display);
glutKeyboardFunc(keyboard);
glutMainLoop();
return 0;
}