Libreria grafica para C++?

Si tienes alguna duda y crees que alguien podría resolverla, ponla aquí. || If you have any doubt about programming, post it here.

Moderador: CEZ

Responder
Kovenan
128 bits
128 bits
Mensajes: 1630
Registrado: 14 Sep 2006 15:16

Libreria grafica para C++?

Mensaje por Kovenan »

Alguna libreria para dibujar graficas en C++ tipo cientificas no sprites ni nada de eso?????

SALUDOS,
Avatar de Usuario
chema
32 bits
32 bits
Mensajes: 352
Registrado: 20 Sep 2007 22:12
Ubicación: Barcelona
Contactar:

Mensaje por chema »

Tienes la librería Allegro, que se usa para videojuegos pero que tiene funciones sencillas para dibujar puntos, líneas, etc.

SDL es una librería similar, no la he utilizado tanto pero también te puede servir.

Saludos
Avatar de Usuario
Benway
Site Admin
Site Admin
Mensajes: 9241
Registrado: 24 Dic 2005 10:18
Ubicación: Madrid
Contactar:

Mensaje por Benway »

Yo alguna vez que he querido hacer una gráfica tipo científica, he usado Allegro y ha cubierto mis expectativas más que de sobra ;)
Un saludo.
Imagen - Imagen - Imagen
Kovenan
128 bits
128 bits
Mensajes: 1630
Registrado: 14 Sep 2006 15:16

Mensaje por Kovenan »

Gracias a los dos por las respuestas, probé Allegro para esto precisamente pero no me convencio, supongo que la use mal, por que por ejemplo en una parabola no me daba continuidad en los puntos,eran puntos en forma de parabola mas que una curva.

SALUDOS.
Avatar de Usuario
Benway
Site Admin
Site Admin
Mensajes: 9241
Registrado: 24 Dic 2005 10:18
Ubicación: Madrid
Contactar:

Mensaje por Benway »

Kovenan escribió:Gracias a los dos por las respuestas, probé Allegro para esto precisamente pero no me convencio, supongo que la use mal, por que por ejemplo en una parabola no me daba continuidad en los puntos,eran puntos en forma de parabola mas que una curva.

SALUDOS.
Eso depende de los valores que le des: Prueba a usar menores incrementos de X, ¿no? ;)
Un saludo.
Imagen - Imagen - Imagen
Avatar de Usuario
chema
32 bits
32 bits
Mensajes: 352
Registrado: 20 Sep 2007 22:12
Ubicación: Barcelona
Contactar:

Mensaje por chema »

Como dice benway si das incrementos menores de x los puntos no te saldrán tan separados (Un incremento igual a un píxel te daría una buena aproximación). Para que no se vean puntos sueltos puedes dibujar líneas entre punto y punto en vez de puntos separados.

Saludos
Kovenan
128 bits
128 bits
Mensajes: 1630
Registrado: 14 Sep 2006 15:16

Mensaje por Kovenan »

Si es una posibilad ,que para graficas x=y+a (rectas) da el pego, pero cuando por ejemplo te vas una grafica logaritmica en la que Y crece exponencialmente, te sales de la pantalla enseguida al menos eso me pasaba a mi que yo recuerde, en la grafica que necesito por ejemplo tienes que poner valores desde 6000 gr a 0 gr aproximadamente.

Lo puedo hacer con programas ya hechos, pero asi aprendo algo de C++.

Haré algunas pruebas si me acuerdo de como usar el allegro
Avatar de Usuario
Benway
Site Admin
Site Admin
Mensajes: 9241
Registrado: 24 Dic 2005 10:18
Ubicación: Madrid
Contactar:

Mensaje por Benway »

Luego, si usas un modo con poca resolución (p.ej. 320 x 240), pues tienes lo que tienes... y difícilmente te van a salir los puntos unidos.

La solución que te propone Chema (hacer líneas entre los puntos) yo creo que es perfecta, y en C++ debe ser facilísimo de implementar ;)
Un saludo.
Imagen - Imagen - Imagen
Kovenan
128 bits
128 bits
Mensajes: 1630
Registrado: 14 Sep 2006 15:16

Mensaje por Kovenan »

LO hice en 800x600, ya os digo que problamente lo este haciendo mal por que de programar yo muy poquito.

Entonces usando el propio allegro dibujar los puntos y unirlos con rectas no?

A ver como quedan las graficas curvas, por que para rectas no importa lo separado que esten los puntos pero para logaritmos que son curvas...

Bueno a ver que sale, gracias por las ideas y ya os ire preguntando

SALUDOS.
Avatar de Usuario
Benway
Site Admin
Site Admin
Mensajes: 9241
Registrado: 24 Dic 2005 10:18
Ubicación: Madrid
Contactar:

Mensaje por Benway »

Sí. Te cuento como lo haría yo ;)

Primero, usaría 1024 x 768 como mínimo, con incrementos de x de un píxel.

Después, haría un método que, recibiendo las coordenadas del nuevo punto, dibujase una recta desde el punto anterior hasta este nuevo, y "almacenase" este nuevo punto como "último punto", para seguir repitiendo el proceso.

Hay una función de Allegro que te vendrá de perlas:
En la documentación de Allegro, alguien escribió:void line(BITMAP *bmp, int x1, int y1, int x2, int y2, int color);

Draws a line onto the bitmap, from point (x1, y1) to (x2, y2).
También tienes otra función que sería interesante de investigar:
void do_line(BITMAP *bmp, int x1, y1, x2, y2, int d, void (*proc)(BITMAP *bmp, int x, int y, int d));

Calculates all the points along a line from point (x1, y1) to (x2, y2), calling the supplied function for each one. This will be passed a copy of the bmp parameter, the x and y position, and a copy of the d parameter, so it is suitable for use with putpixel().
E incluso...
void do_ellipse(BITMAP *bmp, int x, int y, int rx, ry, int d, void (*proc)(BITMAP *bmp, int x, int y, int d));

Calculates all the points in an ellipse around point (x, y) with radius rx and ry, calling the supplied function for each one. This will be passed a copy of the bmp parameter, the x and y position, and a copy of the d parameter, so it is suitable for use with putpixel().
Puedes hacerte una clase "punto", y manejarlas con una lista enlazada. Y que sea la misma clase que maneje la lista la que se encargue de dibujar las rectas... Es lo primero que se me ha ocurrido, pero debería funcionar! ;)

Suerte. Silba si necesitas ayuda :P
Un saludo.
Imagen - Imagen - Imagen
Kovenan
128 bits
128 bits
Mensajes: 1630
Registrado: 14 Sep 2006 15:16

Mensaje por Kovenan »

Tio mi C++ es poco mas que cout y cin , de momento las clases me quedan muy grandes :(

Cuando llegue a mi casa veré el listado de lo que hice y ya te lo comento.

Te silbare la intro de la muerte tenia un precio para que sepas que soy yo :P

SALUDOS
Responder