Capturas de Pantalla
Texto Posición original
Texto Rotado
CÓDIGO:
/**
Programa que hace rotar 2 textos:
Uno sobre su propio eje y en sentido contrario de las manecillas del reloj
y el otro alrededor
Utilizando el botón izquierdo el texto gira a la izquierda
Utilizando el botón derecho el texto gira a la derecha
David Gomez Jaramillo
*/
#include <windows.h>
#include <gl/glut.h>
#include <string.h>
#define WIDTH 700
#define HEIGHT 700
#define TEXTO "David Gomez"
float rotacion=0;
int x=400, y=400;
void drawText(char *str)//
{
int i;
int len=strlen(str);
glRasterPos2f(x,y);
glColor3f(1,0,0.1);
for(i=0;i<len;i++){
glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_24,str[i]);
glutStrokeCharacter(GLUT_STROKE_ROMAN,str[i]);
}
}
void display()
{
glClear( GL_COLOR_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glScalef(0.001, 0.001, 0.001);
glRotatef(rotacion, 0, 0, 1.0);
drawText(TEXTO);
glutSwapBuffers();
glFlush();
}
void mouse(int boton, int grado, int x, int y)
{
if (boton==GLUT_LEFT_BUTTON && grado == GLUT_DOWN)
{
rotacion += 45.0;
}
if (boton==GLUT_MIDDLE_BUTTON && grado == GLUT_DOWN)
{
rotacion = 0.0;
}
if (boton==GLUT_RIGHT_BUTTON && grado == GLUT_DOWN)
{
rotacion -= 45.0;
}
glutPostRedisplay();
}
void init()
{
glClearColor( 1.0, 1.0, 1.0, 1.0);
glColor3f(1.0,0.0,0.0);
}
void ajustarViewPort(int ancho,int alto)
{
float aspect_ratio;
aspect_ratio=1;
if(1>(ancho/alto))
{
glViewport(0,0,ancho,ancho/aspect_ratio);
}
else{
glViewport(0,0,alto*aspect_ratio,alto);
}
}
int main( int argc, char ** argv)
{
glutInit( &argc, argv);
glutInitDisplayMode( GLUT_DOUBLE| GLUT_RGB);
glutInitWindowPosition( 300, 100);
glutInitWindowSize(WIDTH,HEIGHT);
glutCreateWindow( "Rotacion de 2 Textos");
glutReshapeFunc(ajustarViewPort);
init();
glutDisplayFunc(display);
glutMouseFunc(mouse);
glutMainLoop();
return 0;
}
Descargar:
No hay comentarios:
Publicar un comentario