Los foros del Guille

elGuille.hosting: Ofertas de alojamiento
posiblemente los mejores precios
¡¡¡ Ahora con el doble de casi todo !!!

Si no encuentras respuesta, puedes buscar en el sitio del Guille

Google
 
Selecciona el foro y pulsa en mostrar:     Mostrar 
De tu interés (algunos de los avisos publicados)

20/mar/2008

¡Ya puedes comprar mi libro de Visual Basic 9.0!


http://www.elguille.info/NET/NovedadesVB9/

  Foro: C / C++.General Cantidad:  Desde:   Hasta:    Aplicar   Responder 
Respuestas a: 54302 - Como graficar las funciones trigonometricas en Visual C++ 6.0?
IDAsuntoFechaNick 
54302 Como graficar las funciones trigonometricas en Visual C++ 6.0?20/11/10 23:25banyelo   
Hola, a todos solicito su colaboracion para terminar un programa, en el cual debo graficar las funciones trigonometrícas en Visual c++(6.0). Como visual C++ no tiene implementada la libreria grafics u otra similar se deben usar las librerias propias de Visual.

Estoy haciendo la prueba inicialmente con la funcion seno, los valores los genero y los guardo en un arreglo, y apartir de este arreglo se debe generar la grafica correspondiente. Ojo, el usuario digita un valor para calcular la precisión con la cual desea la grafica (eje,0.1,0.2,0.3, 0.4 ).

Este es codigo orginal:

#include
#include
#include
#include
#include
#include
#include
#include

void seno (double x);
void coseno (double x);
void tangente (double x);

//define los valores de la fichas
using namespace std;

// variables de apoyo iteraciones pocicion del cursor
int f,c,x,y,opc,p,pp=1;
float z[50]; //vector para guardar los datos de las funciones

void jyj(string sztext,int x,int y,WORD color) //funcion para posicionar el cursos
{
HANDLE OutputH;
COORD position={x,y};
OutputH=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(OutputH,color);
SetConsoleCursorPosition(OutputH,position);
}

void ejes() //Funcion dibuja los ejes x,y
{
int m=0,s=0,i;

//Dibuja eje y
jyj(" ",18,5,BACKGROUND_GREEN|BACKGROUND_RED|BACKGROUND_BLUE|BACKGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_INTENSITY);
cout<<"| "< jyj(" ",18,6,BACKGROUND_GREEN|BACKGROUND_RED|BACKGROUND_BLUE|BACKGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_INTENSITY);
cout<<"| "< jyj(" ",18,7,BACKGROUND_GREEN|BACKGROUND_RED|BACKGROUND_BLUE|BACKGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_INTENSITY);
cout<<"| "< jyj(" ",18,8,BACKGROUND_GREEN|BACKGROUND_RED|BACKGROUND_BLUE|BACKGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_INTENSITY);
cout<<"| "< jyj(" ",18,9,BACKGROUND_GREEN|BACKGROUND_RED|BACKGROUND_BLUE|BACKGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_INTENSITY);
cout<<"| "< jyj(" ",18,10,BACKGROUND_GREEN|BACKGROUND_RED|BACKGROUND_BLUE|BACKGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_INTENSITY);
cout<<"| "< jyj(" ",18,11,BACKGROUND_GREEN|BACKGROUND_RED|BACKGROUND_BLUE|BACKGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_INTENSITY);
cout<<"| "< jyj(" ",18,12,BACKGROUND_GREEN|BACKGROUND_RED|BACKGROUND_BLUE|BACKGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_INTENSITY);
cout<<"| "< jyj(" ",18,13,BACKGROUND_GREEN|BACKGROUND_RED|BACKGROUND_BLUE|BACKGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_INTENSITY);
cout<<"| "< jyj(" ",18,14,BACKGROUND_GREEN|BACKGROUND_RED|BACKGROUND_BLUE|BACKGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_INTENSITY);
cout<<"| "< jyj(" ",18,15,BACKGROUND_GREEN|BACKGROUND_RED|BACKGROUND_BLUE|BACKGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_INTENSITY);
cout<<"| "< jyj(" ",18,16,BACKGROUND_GREEN|BACKGROUND_RED|BACKGROUND_BLUE|BACKGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_INTENSITY);
cout<<"| "< jyj(" ",18,17,BACKGROUND_GREEN|BACKGROUND_RED|BACKGROUND_BLUE|BACKGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_INTENSITY);
IDAsuntoFechaNick 
54305 Re: Como graficar las funciones trigonometricas en Visual C++ 6.0? (Resp: 54302)21/11/10 17:08RFOG   
¿Y cuál es el problema?


Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias.
IDAsuntoFechaNick 
54311 Re: Como graficar las funciones trigonometricas en Visual C++ 6.0? (Resp: 54305)22/11/10 23:11banyelo   
RFOG...El problema consiste en que se debe crear una función que grafica(pinte)en consola las señales de las funciones seno, coseno, tangente, a partir de los datos guardados en el vector z. Pero la verdad no se como realizarla....


Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias.
IDAsuntoFechaNick 
54335 Re: Como graficar las funciones trigonometricas en Visual C++ 6.0? (Resp: 54302)24/11/10 18:14Alex Pizarro J.   
No conozco mucho de C++, pero al parecer lo que intentas hacer es un callejón sin salida, o al menos uno muy difícil del cual salir.

Para 'dibujar' en la consola, tendrías que implentarte buenas funciones que permitan dibujar líneas sobre el gráfico que quieres. Te puedo dar ideas, pero hasta ahí llego.

Podrías almacenar el texto que vas a querer imprimir en la consola en una variable. Dibuja los ejes en este mismo String, (de acuerdo a cómo sabes que va a salir al pasarlo a la consola). Luego, sabiendo cuál es la fuente de la consola, tendrías que hacerte funciones para dibujar líneas y curvas, todo eso en texto. Una vez listo el String con el 'dibujo', simplemente pasarlo a la consola.

Yo veo esto realmente difícil. También te puedo proponer otras dos soluciones más factibles y fáciles:
1) Si puedes, mostrar un formulario temporalmente con el dibujo del resultado. Ahí no te resultará para nada difícil dibujar con el API de Windows.
2) Si de verdad tienes que ser en la consola, podrías dibujar el resultado en memoria, como una imagen. Luego guardarla en disco duro. Por último, hay buenos programas en la red que permiten convertir imágenes a texto. Podrías buscar alguno que funcione por la consola de comandos, te retorne la imagen en texto, y ese texto ponerlo en la consola.

Repito, esto lo veo realmente difícil. Sólo esas opciones se me ocurren.


Saludos.
[Editado: Alex Pizarro J., 24/11/2010 18:16:16]


Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias.
IDAsuntoFechaNick 
54379 Re: Como graficar las funciones trigonometricas en Visual C++ 6.0? (Resp: 54335)02/12/10 14:14RFOG   
Añado a lo de Alex que puedes componerte la pantalla como un array de caracteres de 80x25 y hacer que cada índice sea un valor de ordenada y abscisa en relación al valor máximo de la función tanto en X como en Y. Y cuando hayas pintado ahí una X en cada coincidencia, vuelcas ese array completo en la pantalla. La precisión no iba a ser como para echar cohetes...

El problema como bien te dice Alex es que no hay funciones de pintado en la consola, que no es más que un "teletipo" como si fuera una tira de papel.

Otra solución sería obtener la dirección base de la memoria de vídeo (simulada) y escribir directamente ahí con un puntero, como se hacía en los tiempos de MS-DOS... Pero no te lo recomiendo...


Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias.

 
(c) Guillermo 'guille' Som, 2005-2017  - foros.elGuille v1.0.5.3 (23/Mar/2009 14:50 GMT +1)  - (ASP.NET 2.0 v2.0.50727.8762)
 
Usuarios activos: 22 - App. iniciada: 21/11/2017 10:44:15 GMT - La hora GMT del servidor es: 21/11/2017 12:02:19 GMT