[C con Clase] plotear X-Y usando consola win32

Davidson, Steven srd4121 en njit.edu
Dom Mar 3 17:47:34 CET 2013


Hola Gery,

2013/3/2 Gery . <gamejihou en hotmail.com>

> Hola Steven y Salvador, y todos los usuarios de la lista:
>
> Soy nuevo por aqui enviando consultas a la lista y en general en el mundo
> de la programacion en C++. Despues de probar varios ejemplos en C++
> durante un tiempo, y leido casi todo el excelente curso que tienen, hecomenzado a buscar
> la manera de plotear mis resultados. Generalmente siempre he usado shell
> y herramientas en linux para hacer mis calculos pero ahora lo estoy
> haciendo con C++. Empeze con consolas win32 pero tb estoy probando con
> window forms.
>
> Sobre el primero tengo una duda que quizas me puedan a ayudar a entender,
> dado que despues de varias semanas buscando en google no he encontrado
> nada realmente claro. Lo que quiero es plotear datos X-Y despues de que
> mi programa termine de funcionar. Por
>

[CORTE]

y quiero que despues que de los resultados, esto es las dos columnas "x" y
> "f(x)", aparezca un grafico ploteando la linea, como la figura adjunta.
> No quiero nada adornado, solo un grafico simple donde aparezca la linea.Mi pregunta es
> si se puede adicionar codigo al codigo de arriba para que genere ese
> grafico. En linux, yo corro el codigo de arriba con: c++ sin.cpp -o
> sin.exe. Mi idea es que al
>

No hay nada en C/C++ ni en sus bibliotecas (estándares) para manipular
gráficos; ni tampoco para otros temas, como música, sonido,
telecomunicaciones, etc.. Por lo tanto, tienes que usar alguna biblioteca
gráfica diseñada para tu plataforma y para el compilador que usas.

tener sin.cpp compilado (ie. sin.exe) con el codigo para plotear el X-Y,
> pueda correr ese archivo en cualquier pc con linux. Se que puedo poner
> ese codigo en visual C++ y hacer un link a excel para plotear los resultados,
> asi como utilizar librerias externas al VC++, pero mi idea es que ese EXE
> no dependa de eso.
>
> Tocando el mismo tema, pero yendo a lo que es windows form (queprobablemente
> estoy siendo un poco "anti C++" con esto ya que esos individuos trabajan
> con C++/CLR), se que se puede utilizar MSchart (que es un "plugin") para
> graficar, pero he leido que esto genera un problema al compilar y pasar
> el EXE entre pcs si es que no se tiene el .NET Framewok respectivo (x lo
> que entiendo es que ese mschart no forma parte del EXE), saben si eso es
> correcto?
>
>
Se trata de un control ActiveX, que ahora también aparece en .NET. El
armazón de .NET ya es accesible en cualquier PC que tenga MS-Windows, así
que no deberías tener muchos problemas, si quieres usar .NET, lo cual
requiere otra forma de preparar tu programa para que funcione.

La otra opción es cargando el control ActiveX, pero eso requiere manejar
controles OLE/COM, y usar sus bibliotecas, que también requiere usar su
forma de hacer las cosas, pero pienso que no es tan "problemático"
comparado con .NET.

Finalmente (disculpen por el largo correo), se que consolas win32 es simple
> que el API win32, he "hojeado" el curso que tienen de este ultimo (ya que
> son mas de 2000 paginas!), y no he podido bajar los ejemplos que tienen
> ya que ocurre un problema, pero quisiera saber si en el caso no se pueda
> hacer los graficos X-Y con consola win32 de la forma que quiero, esto se
> podria hacer con el API win32.
>
>
La consola es sólo para texto y no tiene prestaciones avanzadas para
gráficos. Si quieres dibujar, entonces necesitas crear una ventana en la
que poder dibujar con las funciones de la GDI. Puedes dirigirte al capítulo
16 de nuestro curso del API de MS-Windows, yendo a:
http://winapi.conclase.net/curso/index.php?cap=016#inicio

Tienes un error en tu código fuente. Escribes:

for( unsigned i=0; i<=Nplot; i++ )

Esto implica que 'i' va de 0 á 100, resultando en 101 muestras. Sin
embargo, 'Nplot' sugiere que representa la cantidad total de muestras. Por
lo tanto, deberíamos ir de 0 á 99; esto es,

for( unsigned i=0; i<Nplot; i++ )

Cuando muestres la gráfica, tienes que tomar en cuenta que el sistema de
coordenadas, que usa las matemáticas, es diferente al de la ventana. Aparte
de la diferencia entre las unidades de cada dimensión, el sentido positivo
del eje Y del sistema cartesiano es diferente al de la ventana, que
típicamente va hacia abajo. Para más información, puedes consultar el
capítulo 2 de nuestro curso de gráficos, yendo a:
http://graficos.conclase.net/curso/index.php?cap=002#inicio

Si vas a usar la GDI, entonces puedes indicar a tu ventana el origen, la
vista, y el modo de "mapeo" que quieres, para que así automáticamente se
ajuste al sistema cartesiano. Puedes consultar el capítulo 28 de nuestro
curso del API de MS-Windows; puedes ir a:
http://winapi.conclase.net/curso/index.php?cap=028#028_VENTANAS


Espero que esto te oriente.

Steven
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20130303/6a160f2d/attachment.html>


Más información sobre la lista de distribución Cconclase