Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <windows.h>
- #include <string.h>
- #include <stdlib.h>
- #include <stdio.h>
- #include <GL/glut.h>
- int Xo, Xf;
- int Yo, Yf;
- int H, W;
- int yL = 10;
- void ConfigureWindow(int newW, int newH);
- void OnResizeWindow(int width, int height);
- void OnRender(void);
- void init();
- void init(void)
- {
- Xo = 0;
- Xf = 0;
- Yo = 0;
- Yf = 0;
- glClearColor(0.0, 0.0, 0.0, 0.0); //parametros: rojo, amarillo y azul, el cuarto es el parametro alpha
- glShadeModel(GL_FLAT);
- glColor3f(1.0, 1.0, 1.0);
- }
- void OnMouse(int button, int state, int x, int y)
- {
- if (button == GLUT_LEFT_BUTTON)
- {
- if (state == GLUT_DOWN)
- {
- Xo = x;
- Yo = y;
- }
- }
- }
- void OnMouseMove(int x, int y)
- {
- Xf = x;
- Yf = y;
- glutPostRedisplay();
- }
- void pantalla(){
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
- glColor4f(1.0f, 1.0f, 0.0f, 1.0f);
- glBegin(GL_POINTS);
- int dx, dy, dE, dNE, d, x, y;
- dx = Xf - Xo;
- dy = Yf - Yo;
- x = Xo;
- y = Yo;
- /////////////////
- if(x < Xf)
- {
- d = -2 * dy + dx;
- dE = 2 * dy - dx;
- dNE = 2 * (dy - dx);
- //dE < 0 && dNE >0
- while (x < Xf)
- {
- if (d <= 0){
- d = d + dE;
- x++;
- }
- else{
- d = d + dNE;
- x++;
- y++;
- }
- glVertex2i(x, y);
- }
- glEnd();
- }
- //////////
- else if (y < Yf)
- {
- d = -dy + 2*dx;
- dE = (3/2)*dy + 1;
- dNE = (3/2)*dy;
- //dE < 0 && dNE >0
- while (x < Xf)
- {
- if (d <= 0){
- d = d + dE;
- y++;
- }
- else{
- d = d + dNE;
- x++;
- y++;
- }
- glVertex2i(x, y);
- }
- glEnd();
- }
- ////////////////
- }
- void ConfigureWindow(int newW, int newH)
- {
- glViewport(0, 0, newW, newH);
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- gluOrtho2D(0, newW, newH, 0);
- }
- void OnResizeWindow(int width, int height)
- {
- ConfigureWindow(width, height);
- W = width;
- H = height;
- }
- void OnRender(void)
- {
- glClear(GL_COLOR_BUFFER_BIT);
- ConfigureWindow(W, H);
- pantalla();
- glutSwapBuffers();
- }
- void reshape(int w, int h)
- {
- glViewport(0, 0, (GLsizei)w, (GLsizei)h);
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- glOrtho(-10.0, 10.0, -10.0, 10, -10.0, 10.0);
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
- }
- int main(int argc, char **argv){
- H = 500;
- W = 500;
- glutInit(&argc, argv);
- glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE);
- glutCreateWindow("Línea");
- glutReshapeWindow(W, H);
- glutDisplayFunc(OnRender);
- glutReshapeFunc(OnResizeWindow);
- glutMouseFunc(OnMouse);
- glutMotionFunc(OnMouseMove);
- glutMainLoop();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement