Foros del Web » Programación para mayores de 30 ;) » Programación General »

Graficacion Matematica en C#

Estas en el tema de Graficacion Matematica en C# en el foro de Programación General en Foros del Web. Hola a todos..... Bueno, aqui va mi problema..... tengo que hacer para un proyecto de corte un programa para graficar ecuaciones matematicas, tales como, parabolas, ...
  #1 (permalink)  
Antiguo 18/04/2007, 10:49
 
Fecha de Ingreso: abril-2007
Mensajes: 2
Antigüedad: 17 años
Puntos: 0
Graficacion Matematica en C#

Hola a todos.....

Bueno, aqui va mi problema..... tengo que hacer para un proyecto de corte un programa para graficar ecuaciones matematicas, tales como, parabolas, seno, coseno, secante....... las principales.....

Lo que me pasa es que no se como voy a hacer eso en C#..... ya se como dibujar lineas, crear graficos y pintar, pero graficar una ecuacion no tengo idea de como voy a hacerlo.......

Les pido que si pueden ayudarme con esto que me ayuden lo antes posible......

Saludos a todos......
  #2 (permalink)  
Antiguo 18/04/2007, 11:39
Avatar de _Lucifer_  
Fecha de Ingreso: junio-2006
Mensajes: 1.662
Antigüedad: 17 años, 11 meses
Puntos: 28
Re: Graficacion Matematica en C#

Es realmente facil, solo debes evaluar la funcion cada cierto valor en un intervalo para generar los puntos y luego ajustarlos a la escala necesaria. Por ejemplo: vas a graficar entre -2 y 2. No puedes generar los infinitos puntos que hay, asi que tomas un valos y discretizas. Tomemos 0.1, entonces vas a generar valores entre que van deste -2 hasta 2 de 0.1 en 0.1: -2, -1.9, -1.8, -1.7 .... 1.7, 1.8, 1.9, 2 y evaluas la funcion que vas a graficar en cada uno de ellos.

Tienes que ajustar la escala adecuada, por ejemplo si dices que esos son directamente pixeles tu grafico tendra un ancho de 4 pixeles!!

Entonces estableces un recuadro en el que vas a dibujar tu grafico y escalas los puntos de manera adecuada.

Saludos
__________________
Si crees que no tiene sentido, etonces probablemente lo tenga... :arriba:
  #3 (permalink)  
Antiguo 18/04/2007, 12:20
 
Fecha de Ingreso: noviembre-2003
Ubicación: Mexico
Mensajes: 1.081
Antigüedad: 20 años, 5 meses
Puntos: 7
Re: Graficacion Matematica en C#

que tal,

ademas de lo que te dijo lucifer, estoy casi seguro que .net tiene funciones para dibujar senos y cosenos ( a menos que lo este confundiendo con java...)

saludos,
  #4 (permalink)  
Antiguo 18/04/2007, 14:14
 
Fecha de Ingreso: abril-2007
Mensajes: 2
Antigüedad: 17 años
Puntos: 0
Re: Graficacion Matematica en C#

Hola, Lucifer y gracias por la ayuda, me podrias decir que es eso de escalar, se que hay una propiedad que es Scale, pero no se para que sirve.... saludos y espero tu respuesta.....
  #5 (permalink)  
Antiguo 18/04/2007, 14:30
Avatar de _Lucifer_  
Fecha de Ingreso: junio-2006
Mensajes: 1.662
Antigüedad: 17 años, 11 meses
Puntos: 28
Re: Graficacion Matematica en C#

Bueno, retomando el ejemplo que te ponia, vas a graficar de -2 a 2, eso te da un cuadro de 4 pixeles de ancho! es evidente que no te sirve, entonces vamos a suponer que lo vas a dibujar en un cuadro de 100 pixeles de ancho. ¿Como haces?

Dices algo asi: -2 corresponde al pixel 0 del recuadro y 2 corresponde al pixel 100 del recuadro, todo lo demas va en medio. Esto te sirve para el horizontal, para el vertical es lo mismo pero con los valores que establezcas, pero toma en cuenta que en cuadro el origen esta en la parte superior izquierda. De aqui solo te queda ponerte con un poco de imaginacion y un par de cuentas.

Con una regla de tres sale facilmente.

Saludos.
__________________
Si crees que no tiene sentido, etonces probablemente lo tenga... :arriba:
  #6 (permalink)  
Antiguo 18/04/2007, 18:31
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
Re: Graficacion Matematica en C#

Yo en C lo hice de esta s 2 maneras

La primera fue crear dos loops fors que tomaran los valores de toda la pantalla.
mi pantalla era de 800x600 entonces era algo asi.

for(x=0; f<800; x+=+0.1f)...

y otro parecido pero con 600.

Y luego una condicion.

//La ecuacion de un circulo con radio 5
if(x*x+y*y-25==0)
pintar pixel en x, y

Eso funciona bien, pero es extremadamente lento e ineficiente.

Otra manera que intente fue convirtiendolo a funcion.

entonces ya solo necesitas un loop, pero aqui los valores no son de la pantalla precisamente sino el dominio y el rango.

Entonces te quedaria algo asi:

for(x=-100; x<100; x+=1)
{
pintar_pixel(x, f(x));
}

Eso es muchisimo mas rapido prepreciso y eficiente.
Hay otras formas aun mas rapidas y eficiente.
Si te vas a google, encuentras.

Saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:35.