Descargar

Graficadora de funciones matemáticas en Visual Basic 2005 (página 6)

Enviado por jaimemontoya


Partes: 1, 2, 3, 4, 5, 6

grafico.DrawEllipse(Pens.White, coordenadaxadaptada, coordenadayadaptada, 1, 1) 'Esta línea del programa es la encargada de poner los puntos, a partir de los cuales se podrá visualizar la gráfica de las funciones. Como ya se obtuvo el valor de coordenadaadaptadax y el valor de coordenadaadaptaday, se ponen esas coordenadas como un puntito, pues los parámetros que se le dan de 1, 1; significan que de ancho y alto se le de 1 pixel para que quede un puntito, pues en realidad se está utilizando la herramienta de dibujar una elipse.

Next

Else

MsgBox("Introduzca una función válida.", MsgBoxStyle.OkOnly, "No se ha generado el Assembly") 'Esto es en el caso que la función introducida por el usuario no sea reconocida como función matemática, por ejemplo si el usuario escribe disparates.

grafico.Clear(Color.Black) 'Si no se ha reconocido como función matemática la función introducida por el usuario, entonces pone negro todo el PictureBox.

End If

End Sub

Private Sub disminuirzoom_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles disminuirzoom.Click

textboxxminimo.Text = Val(Int(textboxxminimo.Text) – 1) 'Si el usuario había puesto -5 en xminimo, se cambia a -6. Con eso hay más escalas y se logra alejar una imagen de la gráfica o disminuir zoom.

textboxxmaximo.Text = Val(Int(textboxxmaximo.Text) + 1) 'Si el usuario había puesto 5 en xmaximo, se cambia a 6. Con eso hay más escalas y se logra alejar una imagen de la gráfica o disminuir zoom.

textboxyminimo.Text = Val(Int(textboxyminimo.Text) – 1) 'Si el usuario había puesto -5 en yminimo, se cambia a -6. Con eso hay más escalas y se logra alejar una imagen de la gráfica o disminuir zoom.

textboxymaximo.Text = Val(Int(textboxymaximo.Text) + 1) 'Si el usuario había puesto 5 en ymaximo, se cambia a 6. Con eso hay más escalas y se logra alejar una imagen de la gráfica o disminuir zoom.

graficar_Click(sender, e) 'Se está llamando al procedimiento del botón Graficar. Con eso hay más escalas y se logra acercar la imagen de la gráfica o disminuir zoom.

End Sub

Private Sub aumentarzoom_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles aumentarzoom.Click

textboxxminimo.Text = Val(Int(textboxxminimo.Text) + 1) 'Si el usuario había puesto -5 en xminimo, se cambia a -4. Con eso hay menos escalas y se logra acercar una imagen de la gráfica o aumentar zoom.

textboxxmaximo.Text = Val(Int(textboxxmaximo.Text) – 1) 'Si el usuario había puesto 5 en xmaximo, se lo cambia a 4. Con eso hay menos escalas y se logra acercar una imagen de la gráfica o aumentar zoom.

textboxyminimo.Text = Val(Int(textboxyminimo.Text) + 1) 'Si el usuario había puesto -5 en yminimo, se cambia a -4. Con eso hay menos escalas y se logra acercar una imagen de la gráfica o aumentar zoom.

textboxymaximo.Text = Val(Int(textboxymaximo.Text) – 1) 'Si el usuario había puesto 5 en ymaximo, se cambia a 4. Con eso hay menos escalas y se logra acercar una imagen de la gráfica o aumentar zoom.

graficar_Click(sender, e) 'Se está llamando al método o procedimiento completo del botón graficar, pues luego de haber cambiado las escalas se tiene que generar nuevamente la gráfica con las escalas aumentadas o disminuidas. Se trata del método para el botón graficar, del Public Sub graficar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles graficar.Click

End Sub

Private Sub arriba_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles arriba.Click

textboxyminimo.Text = Val(textboxyminimo.Text) + 1

textboxymaximo.Text = Val(textboxymaximo.Text) + 1

yminimo = Val(textboxyminimo.Text) + 1 'El gráfico no cambiará pero esto hará que la vista del gráfico suba en el eje y.

ymaximo = Val(textboxymaximo.Text) + 1 'El gráfico no cambiará pero esto hará que la vista del gráfico suba en el eje y.

xminimo = Val(textboxxminimo.Text) 'Variable ya declarada como Public.

xmaximo = Val(textboxxmaximo.Text) 'Variable ya declarada como Public.

Dim cerox As Integer = ((400) / (xmaximo – xminimo)) * (0 – xminimo) '400 son los pixeles que hay en x. xminimo es la escala de inicio en el eje x. xmaximo es la escala de fin en el eje x

Dim ceroy As Integer = ((400) / (yminimo – ymaximo)) * (0 – ymaximo)

Dim rayadeescala As Integer

grafico = PictureBox1.CreateGraphics

grafico.Clear(Color.Black) 'Para que cada vez que se haga clic en el botón Graficar, que borre el gráfico que estaba anteriormente antes de crear uno nuevo, para que no quede un gráfico sobre otro.

If yminimo < 0 Then 'Porque si la escala mínima negativa de las y fuera cero o fuera positiva, no se verá la línea del eje de las x al graficar.

grafico.DrawLine(Pens.White, 0, ceroy, 400, ceroy) 'Trazo de la línea blanca horizontal (eje x).

End If

If xmaximo > 0 Then 'Porque si la escala máxima positiva de las x fuera cero o negativa, no se verá la línea del eje de las y al graficar.

grafico.DrawLine(Pens.White, cerox, 0, cerox, 400) 'Trazo de la línea blanca vertical (eje y).

End If

If yminimo < 0 Then 'Porque si la escala mínima de las y fuera cero o fuera positiva, no se verá la línea del eje de las x al graficar, y por lo tanto no se verían las rayitas de las escalas en el eje de las x.

'Este For es para poner las rayitas de escala del eje x positivo.

For a As Integer = 1 To xmaximo 'Se hacen las rayitas del eje x positivo, desde el 0 hasta el valor máximo de la escala de las x. El ciclo va desde uno porque no hace falta ponerlo desde cero, pues una raya en el origen ni siquiera se vería porque estaría ubicada sobre el eje y

rayadeescala = (((400) / (xmaximo – xminimo)) * (a – xminimo)) '400 es el número de pixeles que hay en el eje x.

grafico.DrawLine(Pens.White, rayadeescala, ceroy – 7, rayadeescala, ceroy + 7) 'Los números 7 significan el número de pixeles de la rayita de la escala tanto hacia abajo como hacia arriba del eje x, de modo que la longitud total de la rayita va a ser de 14 pixeles.

Next

'Este For es para poner las rayitas de escala del eje x negativo.

For a As Integer = xminimo To 0 'Se hacen las rayitas del eje x negativo, desde el valor mímino de x hasta el cero. Al no ponerle Step al For se sabe que va automáticamente de 1 en 1.

rayadeescala = (((400) / (xmaximo – xminimo)) * (a – xminimo)) '400 es el número de pixeles que hay en el eje x.

grafico.DrawLine(Pens.White, rayadeescala, ceroy – 7, rayadeescala, ceroy + 7) 'Los números 7 significan el número de pixeles.

Next

End If

If xmaximo > 0 Then 'Porque si la escala máxima de las x fuera cero o fuera negativa, no se verá la línea del eje de las y al graficar, y por lo tanto no se verían las rayitas de las escalas en el eje de las y.

'Este For es para poner las rayitas de escala del eje y positivo.

For a As Integer = 1 To ymaximo 'Se hacen las rayitas del eje y positivo, desde el 0 hasta el valor máximo de la escala de las y. El ciclo va desde uno porque no hace falta ponerlo desde cero, pues una raya en el origen ni siquiera se vería porque estaría ubicada sobre el eje x.

rayadeescala = (((400) / (yminimo – ymaximo)) * (a – ymaximo)) '400 es el número de pixeles que hay en el eje y.

grafico.DrawLine(Pens.White, cerox – 7, rayadeescala, cerox + 7, rayadeescala) 'Los número 7 significan el número de pixeles de la rayita de la escala tanto hacia la izquierda como hacia la derecha del eje y, de modo que la longitud total de la rayita va a ser de 14 pixeles.

Next

'Este For es para poner las rayitas de escala del eje y negativo.

For a As Integer = yminimo To 0 'Se hacen las rayitas del eje y negativo, desde el valor mínimo de y hasta el cero. Al no ponerle Step al For se sabe que va automáticamente de 1 en 1.

rayadeescala = (((400) / (yminimo – ymaximo)) * (a – ymaximo)) '400 es el número de pixeles que hay en el eje y.

grafico.DrawLine(Pens.White, cerox – 7, rayadeescala, cerox + 7, rayadeescala) 'Los números 7 significan el número de pixeles de la rayita de la escala tanto hacia la izquierda como hacia la derecha del eje y, de modo que la longitud total de la rayita va a ser de 14 pixeles.

Next

End If

'Se crea una nueva instancia de la clase Evaluador

Dim mEval As New Evaluador()

'Se crea una variable tipo string y le asignamos la expresión que queremos evaluar

Dim mExpresion As String = TextBox1.Text ' = "X"

'Se crea un objeto StringCollection y agregamos los parámetros de entrada que usará el método eval

Dim mParameters As New StringCollection()

mParameters.Add("ByVal X as Double")

'Las funciones a utilizar pertenece al espacio de nombres System.Math.

'se hace necesario entonces, crear un objeto StringCollection y agregar

'el namespace System.Math.

Dim mNameSpaces As New StringCollection()

mNameSpaces.Add("System.Math")

'Se invoca el método PrecompilarFunción y verificamos si se genero correctamente el assembly.

If mEval.PrecompilarAssembly(mExpresion, mParameters, mNameSpaces) Then

'Si el assembly se generó correctamente, se crea un array con los valores de los parametros a evaluar

'Hasta este momento se tiene el plano cartesiano con las escalas correspondientes. De aquí en adelante el código es para graficar la función.

For coordenadax As Double = xminimo To xmaximo Step 0.01

Dim mParam() = {coordenadax}

'Se invoca el método Evaluar y se muestra el resultado

coordenaday = mEval.Evaluar(mParam)

coordenadaxadaptada = (((400) / (xmaximo – xminimo)) * (coordenadax – xminimo))

coordenadayadaptada = Int((((400) / (yminimo – ymaximo)) * (coordenaday – ymaximo)))

coordenadaxadaptada = (((400) / (xmaximo – xminimo)) * (coordenadax – xminimo))

coordenadayadaptada = (((400) / (yminimo – ymaximo)) * (coordenaday – ymaximo))

grafico.DrawEllipse(Pens.White, coordenadaxadaptada, coordenadayadaptada, 1, 1)

Next

Else

MsgBox("No se ha generado el Assembly")

End If

End Sub

Private Sub abajo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles abajo.Click

textboxyminimo.Text = Val(textboxyminimo.Text) – 1

textboxymaximo.Text = Val(textboxymaximo.Text) – 1

yminimo = Val(textboxyminimo.Text) – 1 'El gráfico no cambiará pero esto hará que la vista del gráfico baje en el eje y.

ymaximo = Val(textboxymaximo.Text) – 1 'El gráfico no cambiará pero esto hará que la vista del gráfico baje en el eje y.

xminimo = Val(textboxxminimo.Text) 'Variable ya declarada como Public.

xmaximo = Val(textboxxmaximo.Text) 'Variable ya declarada como Public.

Dim cerox As Integer = ((400) / (xmaximo – xminimo)) * (0 – xminimo) '400 son los pixeles que hay en x. xminimo es la escala de inicio en el eje x. xmaximo es la escala de fin en el eje x

Dim ceroy As Integer = ((400) / (yminimo – ymaximo)) * (0 – ymaximo)

Dim rayadeescala As Integer

grafico = PictureBox1.CreateGraphics

grafico.Clear(Color.Black) 'Para que cada vez que se haga clic en el botón Graficar, que borre el gráfico que estaba anteriormente antes de crear uno nuevo, para que no quede un gráfico sobre otro.

If yminimo < 0 Then 'Porque si la escala mínima negativa de las y fuera cero o fuera positiva, no se verá la línea del eje de las x al graficar.

grafico.DrawLine(Pens.White, 0, ceroy, 400, ceroy) 'Trazo de la línea blanca horizontal (eje x).

End If

If xmaximo > 0 Then 'Porque si la escala máxima positiva de las x fuera cero o negativa, no se verá la línea del eje de las y al graficar.

grafico.DrawLine(Pens.White, cerox, 0, cerox, 400) 'Trazo de la línea blanca vertical (eje y).

End If

If yminimo < 0 Then 'Porque si la escala mínima de las y fuera cero o fuera positiva, no se verá la línea del eje de las x al graficar, y por lo tanto no se verían las rayitas de las escalas en el eje de las x.

'Este For es para poner las rayitas de escala del eje x positivo.

For a As Integer = 1 To xmaximo 'Se hacen las rayitas del eje x positivo, desde el 0 hasta el valor máximo de la escala de las x. El ciclo va desde uno porque no hace falta ponerlo desde cero, pues una raya en el origen ni siquiera se vería porque estaría ubicada sobre el eje y

rayadeescala = (((400) / (xmaximo – xminimo)) * (a – xminimo)) '400 es el número de pixeles que hay en el eje x.

grafico.DrawLine(Pens.White, rayadeescala, ceroy – 7, rayadeescala, ceroy + 7) 'Los números 7 significan el número de pixeles de la rayita de la escala tanto hacia abajo como hacia arriba del eje x, de modo que la longitud total de la rayita va a ser de 14 pixeles.

Next

'Este For es para poner las rayitas de escala del eje x negativo.

For a As Integer = xminimo To 0 'Se hacen las rayitas del eje x negativo, desde el valor mímino de x hasta el cero. Al no ponerle Step al For se sabe que va automáticamente de 1 en 1.

rayadeescala = (((400) / (xmaximo – xminimo)) * (a – xminimo)) '400 es el número de pixeles que hay en el eje x.

grafico.DrawLine(Pens.White, rayadeescala, ceroy – 7, rayadeescala, ceroy + 7) 'Los números 7 significan el número de pixeles.

Next

End If

If xmaximo > 0 Then 'Porque si la escala máxima de las x fuera cero o fuera negativa, no se verá la línea del eje de las y al graficar, y por lo tanto no se verían las rayitas de las escalas en el eje de las y.

'Este For es para poner las rayitas de escala del eje y positivo.

For a As Integer = 1 To ymaximo 'Se hacen las rayitas del eje y positivo, desde el 0 hasta el valor máximo de la escala de las y. El ciclo va desde uno porque no hace falta ponerlo desde cero, pues una raya en el origen ni siquiera se vería porque estaría ubicada sobre el eje x.

rayadeescala = (((400) / (yminimo – ymaximo)) * (a – ymaximo)) '400 es el número de pixeles que hay en el eje y.

grafico.DrawLine(Pens.White, cerox – 7, rayadeescala, cerox + 7, rayadeescala) 'Los número 7 significan el número de pixeles de la rayita de la escala tanto hacia la izquierda como hacia la derecha del eje y, de modo que la longitud total de la rayita va a ser de 14 pixeles.

Next

'Este For es para poner las rayitas de escala del eje y negativo.

For a As Integer = yminimo To 0 'Se hacen las rayitas del eje y negativo, desde el valor mínimo de y hasta el cero. Al no ponerle Step al For se sabe que va automáticamente de 1 en 1.

rayadeescala = (((400) / (yminimo – ymaximo)) * (a – ymaximo)) '400 es el número de pixeles que hay en el eje y.

grafico.DrawLine(Pens.White, cerox – 7, rayadeescala, cerox + 7, rayadeescala) 'Los números 7 significan el número de pixeles de la rayita de la escala tanto hacia la izquierda como hacia la derecha del eje y, de modo que la longitud total de la rayita va a ser de 14 pixeles.

Next

End If

'Se crea una nueva instancia de la clase Evaluador

Dim mEval As New Evaluador()

'Se crea una variable tipo string y le asignamos la expresión que queremos evaluar

Dim mExpresion As String = TextBox1.Text ' = "X"

'Se crea un objeto StringCollection y agregamos los parámetros de entrada que usará el método eval

Dim mParameters As New StringCollection()

mParameters.Add("ByVal X as Double")

'Las funciones a utilizar pertenece al espacio de nombres System.Math.

'se hace necesario entonces, crear un objeto StringCollection y agregar

'el namespace System.Math.

Dim mNameSpaces As New StringCollection()

mNameSpaces.Add("System.Math")

'Se invoca el método PrecompilarFunción y verificamos si se genero correctamente el assembly.

If mEval.PrecompilarAssembly(mExpresion, mParameters, mNameSpaces) Then

'Si el assembly se generó correctamente, se crea un array con los valores de los parametros a evaluar

'Hasta este momento se tiene el plano cartesiano con las escalas correspondientes. De aquí en adelante el código es para graficar la función.

For coordenadax As Double = xminimo To xmaximo Step 0.01

Dim mParam() = {coordenadax}

'Se invoca el método Evaluar y se muestra el resultado

coordenaday = mEval.Evaluar(mParam)

coordenadaxadaptada = (((400) / (xmaximo – xminimo)) * (coordenadax – xminimo))

coordenadayadaptada = Int((((400) / (yminimo – ymaximo)) * (coordenaday – ymaximo)))

coordenadaxadaptada = (((400) / (xmaximo – xminimo)) * (coordenadax – xminimo))

coordenadayadaptada = (((400) / (yminimo – ymaximo)) * (coordenaday – ymaximo))

grafico.DrawEllipse(Pens.White, coordenadaxadaptada, coordenadayadaptada, 1, 1)

Next

Else

MsgBox("No se ha generado el Assembly")

End If

End Sub

Private Sub derecha_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles derecha.Click

textboxxminimo.Text = Val(textboxxminimo.Text) + 1

textboxxmaximo.Text = Val(textboxxmaximo.Text) + 1

xminimo = Val(textboxxminimo.Text) + 1 'El gráfico no cambiará pero esto hará que la vista del gráfico se mueva a la derecha del eje x.

xmaximo = Val(textboxxmaximo.Text) + 1 'El gráfico no cambiará pero esto hará que la vista del gráfico se mueva a la derecha del eje x.

yminimo = Val(textboxyminimo.Text) 'Variable ya declarada como Public.

ymaximo = Val(textboxymaximo.Text) 'Variable ya declarada como Public.

Dim cerox As Integer = ((400) / (xmaximo – xminimo)) * (0 – xminimo) '400 son los pixeles que hay en x. xminimo es la escala de inicio en el eje x. xmaximo es la escala de fin en el eje x

Dim ceroy As Integer = ((400) / (yminimo – ymaximo)) * (0 – ymaximo)

Dim rayadeescala As Integer

grafico = PictureBox1.CreateGraphics

grafico.Clear(Color.Black) 'Para que cada vez que se haga clic en el botón Graficar, que borre el gráfico que estaba anteriormente antes de crear uno nuevo, para que no quede un gráfico sobre otro.

If yminimo < 0 Then 'Porque si la escala mínima negativa de las y fuera cero o fuera positiva, no se verá la línea del eje de las x al graficar.

grafico.DrawLine(Pens.White, 0, ceroy, 400, ceroy) 'Trazo de la línea blanca horizontal (eje x).

End If

If xmaximo > 0 Then 'Porque si la escala máxima positiva de las x fuera cero o negativa, no se verá la línea del eje de las y al graficar.

grafico.DrawLine(Pens.White, cerox, 0, cerox, 400) 'Trazo de la línea blanca vertical (eje y).

End If

If yminimo < 0 Then 'Porque si la escala mínima de las y fuera cero o fuera positiva, no se verá la línea del eje de las x al graficar, y por lo tanto no se verían las rayitas de las escalas en el eje de las x.

'Este For es para poner las rayitas de escala del eje x positivo.

For a As Integer = 1 To xmaximo 'Se hacen las rayitas del eje x positivo, desde el 0 hasta el valor máximo de la escala de las x. El ciclo va desde uno porque no hace falta ponerlo desde cero, pues una raya en el origen ni siquiera se vería porque estaría ubicada sobre el eje y

rayadeescala = (((400) / (xmaximo – xminimo)) * (a – xminimo)) '400 es el número de pixeles que hay en el eje x.

grafico.DrawLine(Pens.White, rayadeescala, ceroy – 7, rayadeescala, ceroy + 7) 'Los números 7 significan el número de pixeles de la rayita de la escala tanto hacia abajo como hacia arriba del eje x, de modo que la longitud total de la rayita va a ser de 14 pixeles.

Next

'Este For es para poner las rayitas de escala del eje x negativo.

For a As Integer = xminimo To 0 'Se hacen las rayitas del eje x negativo, desde el valor mímino de x hasta el cero. Al no ponerle Step al For se sabe que va automáticamente de 1 en 1.

rayadeescala = (((400) / (xmaximo – xminimo)) * (a – xminimo)) '400 es el número de pixeles que hay en el eje x.

grafico.DrawLine(Pens.White, rayadeescala, ceroy – 7, rayadeescala, ceroy + 7) 'Los números 7 significan el número de pixeles.

Next

End If

If xmaximo > 0 Then 'Porque si la escala máxima de las x fuera cero o fuera negativa, no se verá la línea del eje de las y al graficar, y por lo tanto no se verían las rayitas de las escalas en el eje de las y.

'Este For es para poner las rayitas de escala del eje y positivo.

For a As Integer = 1 To ymaximo 'Se hacen las rayitas del eje y positivo, desde el 0 hasta el valor máximo de la escala de las y. El ciclo va desde uno porque no hace falta ponerlo desde cero, pues una raya en el origen ni siquiera se vería porque estaría ubicada sobre el eje x.

rayadeescala = (((400) / (yminimo – ymaximo)) * (a – ymaximo)) '400 es el número de pixeles que hay en el eje y.

grafico.DrawLine(Pens.White, cerox – 7, rayadeescala, cerox + 7, rayadeescala) 'Los número 7 significan el número de pixeles de la rayita de la escala tanto hacia la izquierda como hacia la derecha del eje y, de modo que la longitud total de la rayita va a ser de 14 pixeles.

Next

'Este For es para poner las rayitas de escala del eje y negativo.

For a As Integer = yminimo To 0 'Se hacen las rayitas del eje y negativo, desde el valor mínimo de y hasta el cero. Al no ponerle Step al For se sabe que va automáticamente de 1 en 1.

rayadeescala = (((400) / (yminimo – ymaximo)) * (a – ymaximo)) '400 es el número de pixeles que hay en el eje y.

grafico.DrawLine(Pens.White, cerox – 7, rayadeescala, cerox + 7, rayadeescala) 'Los números 7 significan el número de pixeles de la rayita de la escala tanto hacia la izquierda como hacia la derecha del eje y, de modo que la longitud total de la rayita va a ser de 14 pixeles.

Next

End If

'Se crea una nueva instancia de la clase Evaluador

Dim mEval As New Evaluador()

'Se crea una variable tipo string y le asignamos la expresión que queremos evaluar

Dim mExpresion As String = TextBox1.Text ' = "X"

'Se crea un objeto StringCollection y agregamos los parámetros de entrada que usará el método eval

Dim mParameters As New StringCollection()

mParameters.Add("ByVal X as Double")

'Las funciones a utilizar pertenece al espacio de nombres System.Math.

'se hace necesario entonces, crear un objeto StringCollection y agregar

'el namespace System.Math.

Dim mNameSpaces As New StringCollection()

mNameSpaces.Add("System.Math")

'Se invoca el método PrecompilarFunción y verificamos si se genero correctamente el assembly.

If mEval.PrecompilarAssembly(mExpresion, mParameters, mNameSpaces) Then

'Si el assembly se generó correctamente, se crea un array con los valores de los parametros a evaluar

'Hasta este momento se tiene el plano cartesiano con las escalas correspondientes. De aquí en adelante el código es para graficar la función.

For coordenadax As Double = xminimo To xmaximo Step 0.01

Dim mParam() = {coordenadax}

'Se invoca el método Evaluar y se muestra el resultado

coordenaday = mEval.Evaluar(mParam)

coordenadaxadaptada = (((400) / (xmaximo – xminimo)) * (coordenadax – xminimo))

coordenadayadaptada = Int((((400) / (yminimo – ymaximo)) * (coordenaday – ymaximo)))

coordenadaxadaptada = (((400) / (xmaximo – xminimo)) * (coordenadax – xminimo))

coordenadayadaptada = (((400) / (yminimo – ymaximo)) * (coordenaday – ymaximo))

grafico.DrawEllipse(Pens.White, coordenadaxadaptada, coordenadayadaptada, 1, 1)

Next

Else

MsgBox("No se ha generado el Assembly")

End If

End Sub

Private Sub izquierda_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles izquierda.Click

textboxxmaximo.Text = Val(textboxxmaximo.Text) – 1

textboxxminimo.Text = Val(textboxxminimo.Text) – 1

xmaximo = Val(textboxxmaximo.Text) – 1 'El gráfico no cambiará pero esto hará que la vista del gráfico se mueva a la izquierda del eje x.

xminimo = Val(textboxxminimo.Text) – 1 'El gráfico no cambiará pero esto hará que la vista del gráfico se mueva a la izquierda del eje x.

yminimo = Val(textboxyminimo.Text) 'Variable ya declarada como Public.

ymaximo = Val(textboxymaximo.Text) 'Variable ya declarada como Public.

Dim cerox As Integer = ((400) / (xmaximo – xminimo)) * (0 – xminimo) '400 son los pixeles que hay en x. xminimo es la escala de inicio en el eje x. xmaximo es la escala de fin en el eje x

Dim ceroy As Integer = ((400) / (yminimo – ymaximo)) * (0 – ymaximo)

Dim rayadeescala As Integer

grafico = PictureBox1.CreateGraphics

grafico.Clear(Color.Black) 'Para que cada vez que se haga clic en el botón Graficar, que borre el gráfico que estaba anteriormente antes de crear uno nuevo, para que no quede un gráfico sobre otro.

If yminimo < 0 Then 'Porque si la escala mínima negativa de las y fuera cero o fuera positiva, no se verá la línea del eje de las x al graficar.

grafico.DrawLine(Pens.White, 0, ceroy, 400, ceroy) 'Trazo de la línea blanca horizontal (eje x).

End If

If xmaximo > 0 Then 'Porque si la escala máxima positiva de las x fuera cero o negativa, no se verá la línea del eje de las y al graficar.

grafico.DrawLine(Pens.White, cerox, 0, cerox, 400) 'Trazo de la línea blanca vertical (eje y).

End If

If yminimo < 0 Then 'Porque si la escala mínima de las y fuera cero o fuera positiva, no se verá la línea del eje de las x al graficar, y por lo tanto no se verían las rayitas de las escalas en el eje de las x.

'Este For es para poner las rayitas de escala del eje x positivo.

For a As Integer = 1 To xmaximo 'Se hacen las rayitas del eje x positivo, desde el 0 hasta el valor máximo de la escala de las x. El ciclo va desde uno porque no hace falta ponerlo desde cero, pues una raya en el origen ni siquiera se vería porque estaría ubicada sobre el eje y

rayadeescala = (((400) / (xmaximo – xminimo)) * (a – xminimo)) '400 es el número de pixeles que hay en el eje x.

grafico.DrawLine(Pens.White, rayadeescala, ceroy – 7, rayadeescala, ceroy + 7) 'Los números 7 significan el número de pixeles de la rayita de la escala tanto hacia abajo como hacia arriba del eje x, de modo que la longitud total de la rayita va a ser de 14 pixeles.

Next

'Este For es para poner las rayitas de escala del eje x negativo.

For a As Integer = xminimo To 0 'Se hacen las rayitas del eje x negativo, desde el valor mímino de x hasta el cero. Al no ponerle Step al For se sabe que va automáticamente de 1 en 1.

rayadeescala = (((400) / (xmaximo – xminimo)) * (a – xminimo)) '400 es el número de pixeles que hay en el eje x.

grafico.DrawLine(Pens.White, rayadeescala, ceroy – 7, rayadeescala, ceroy + 7) 'Los números 7 significan el número de pixeles.

Next

End If

If xmaximo > 0 Then 'Porque si la escala máxima de las x fuera cero o fuera negativa, no se verá la línea del eje de las y al graficar, y por lo tanto no se verían las rayitas de las escalas en el eje de las y.

'Este For es para poner las rayitas de escala del eje y positivo.

For a As Integer = 1 To ymaximo 'Se hacen las rayitas del eje y positivo, desde el 0 hasta el valor máximo de la escala de las y. El ciclo va desde uno porque no hace falta ponerlo desde cero, pues una raya en el origen ni siquiera se vería porque estaría ubicada sobre el eje x.

rayadeescala = (((400) / (yminimo – ymaximo)) * (a – ymaximo)) '400 es el número de pixeles que hay en el eje y.

grafico.DrawLine(Pens.White, cerox – 7, rayadeescala, cerox + 7, rayadeescala) 'Los número 7 significan el número de pixeles de la rayita de la escala tanto hacia la izquierda como hacia la derecha del eje y, de modo que la longitud total de la rayita va a ser de 14 pixeles.

Next

'Este For es para poner las rayitas de escala del eje y negativo.

For a As Integer = yminimo To 0 'Se hacen las rayitas del eje y negativo, desde el valor mínimo de y hasta el cero. Al no ponerle Step al For se sabe que va automáticamente de 1 en 1.

rayadeescala = (((400) / (yminimo – ymaximo)) * (a – ymaximo)) '400 es el número de pixeles que hay en el eje y.

grafico.DrawLine(Pens.White, cerox – 7, rayadeescala, cerox + 7, rayadeescala) 'Los números 7 significan el número de pixeles de la rayita de la escala tanto hacia la izquierda como hacia la derecha del eje y, de modo que la longitud total de la rayita va a ser de 14 pixeles.

Next

End If

'Se crea una nueva instancia de la clase Evaluador

Dim mEval As New Evaluador()

'Se crea una variable tipo string y le asignamos la expresión que queremos evaluar

Dim mExpresion As String = TextBox1.Text ' = "X"

'Se crea un objeto StringCollection y agregamos los parámetros de entrada que usará el método eval

Dim mParameters As New StringCollection()

mParameters.Add("ByVal X as Double")

'Las funciones a utilizar pertenece al espacio de nombres System.Math.

'se hace necesario entonces, crear un objeto StringCollection y agregar

'el namespace System.Math.

Dim mNameSpaces As New StringCollection()

mNameSpaces.Add("System.Math")

'Se invoca el método PrecompilarFunción y verificamos si se genero correctamente el assembly.

If mEval.PrecompilarAssembly(mExpresion, mParameters, mNameSpaces) Then

'Si el assembly se generó correctamente, se crea un array con los valores de los parametros a evaluar

'Hasta este momento se tiene el plano cartesiano con las escalas correspondientes. De aquí en adelante el código es para graficar la función.

For coordenadax As Double = xminimo To xmaximo Step 0.01

Dim mParam() = {coordenadax}

'Se invoca el método Evaluar y se muestra el resultado

coordenaday = mEval.Evaluar(mParam)

coordenadaxadaptada = (((400) / (xmaximo – xminimo)) * (coordenadax – xminimo))

coordenadayadaptada = Int((((400) / (yminimo – ymaximo)) * (coordenaday – ymaximo)))

coordenadaxadaptada = (((400) / (xmaximo – xminimo)) * (coordenadax – xminimo))

coordenadayadaptada = (((400) / (yminimo – ymaximo)) * (coordenaday – ymaximo))

grafico.DrawEllipse(Pens.White, coordenadaxadaptada, coordenadayadaptada, 1, 1)

Next

Else

MsgBox("No se ha generado el Assembly")

End If

End Sub

Private Sub textboxxminimo_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles textboxxminimo.KeyPress

If (Asc(e.KeyChar) >= 48 And Asc(e.KeyChar) <= 57) Or Asc(e.KeyChar) = 45 Or Asc(e.KeyChar) = 46 Or Asc(e.KeyChar) = 8 Then

Else

Beep() 'Emite sonido.

e.KeyChar = "" 'Reemplaza la tecla digitada con el valor de nada para que no se puedan introducir caracteres inválidos.

End If

End Sub

Private Sub textboxxmaximo_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles textboxxmaximo.KeyPress

If (Asc(e.KeyChar) >= 48 And Asc(e.KeyChar) <= 57) Or Asc(e.KeyChar) = 45 Or Asc(e.KeyChar) = 46 Or Asc(e.KeyChar) = 8 Then

Else

Beep() 'Emite sonido.

e.KeyChar = "" 'Reemplaza la tecla digitada con el valor de nada para que no se puedan introducir caracteres inválidos.

End If

End Sub

Private Sub textboxyminimo_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles textboxyminimo.KeyPress

If (Asc(e.KeyChar) >= 48 And Asc(e.KeyChar) <= 57) Or Asc(e.KeyChar) = 45 Or Asc(e.KeyChar) = 46 Or Asc(e.KeyChar) = 8 Then

Else

Beep() 'Emite sonido.

e.KeyChar = "" 'Reemplaza la tecla digitada con el valor de nada para que no se puedan introducir caracteres inválidos.

End If

End Sub

Private Sub textboxymaximo_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles textboxymaximo.KeyPress

If (Asc(e.KeyChar) >= 48 And Asc(e.KeyChar) <= 57) Or Asc(e.KeyChar) = 45 Or Asc(e.KeyChar) = 46 Or Asc(e.KeyChar) = 8 Then

Else

Beep() 'Emite sonido.

e.KeyChar = "" 'Reemplaza la tecla digitada con el valor de nada para que no se puedan introducir caracteres inválidos.

End If

End Sub

Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles limpiar.Click

If TextBox1.Text = "" Then 'Si no se le pusiera esta condición y sólo se programara grafico.Clear(Color.Black), daría un error que diría: "No se entroló NullReference Exception. Object reference not set to an instance of an object."

Else

TextBox1.Text = ""

grafico.Clear(Color.Black)

End If

End Sub

Private Sub inicio_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

formulariodeinicio.Show()

Me.Hide()

End Sub

Private Sub salir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles salir.Click

Dim mensaje As Integer

mensaje = MsgBox("¿Realmente desea salir del programa?", MsgBoxStyle.YesNo, "Graficador de Funciones Matemáticas")

If mensaje = 6 Then

formulariodesalida.Show()

Me.Hide()

End If

End Sub

Private Sub InsertarToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles InsertarToolStripMenuItem.Click

TextBox1.Focus()

End Sub

Private Sub SalirToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SalirToolStripMenuItem.Click

graficar_Click(sender, e)

End Sub

Private Sub EditarFunciónToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles EditarFunciónToolStripMenuItem.Click

TextBox1.Focus()

End Sub

Private Sub EscalaMínimaEnXToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles EscalaMínimaEnXToolStripMenuItem.Click

textboxxminimo.Focus()

End Sub

Private Sub EscalaMáximaEnXToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles EscalaMáximaEnXToolStripMenuItem.Click

textboxxmaximo.Focus()

End Sub

Private Sub EscalamínimaEnYToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles EscalamínimaEnYToolStripMenuItem.Click

textboxyminimo.Focus()

End Sub

Private Sub EscalaMáximaEnYToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles EscalaMáximaEnYToolStripMenuItem.Click

textboxymaximo.Focus()

End Sub

Private Sub AumentarToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AumentarToolStripMenuItem.Click

aumentarzoom_Click(sender, e)

graficar_Click(sender, e)

End Sub

Private Sub DisminuirToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DisminuirToolStripMenuItem.Click

disminuirzoom_Click(sender, e)

graficar_Click(sender, e)

End Sub

Private Sub DToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DToolStripMenuItem.Click

End Sub

Private Sub HaciaArribaToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles HaciaArribaToolStripMenuItem.Click

arriba_Click(sender, e) 'Llama el procedimiento del botón arriba.

End Sub

Private Sub HaciaAbajoToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles HaciaAbajoToolStripMenuItem.Click

abajo_Click(sender, e) 'Llama el procedimiento del botón abajo.

End Sub

Private Sub HaciaLaDerechaToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles HaciaLaDerechaToolStripMenuItem.Click

derecha_Click(sender, e) 'Llama el procedimiento del botón derecha.

End Sub

Private Sub HaciaLaIzquierdaToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles HaciaLaIzquierdaToolStripMenuItem.Click

izquierda_Click(sender, e) 'Llama el procedimiento del botón izquierda.

End Sub

Private Sub SalirToolStripMenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SalirToolStripMenuItem1.Click

salir_Click(sender, e)

End Sub

Private Sub ayuda_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ayuda.Click

formulariodeayuda.Show()

Me.Hide()

End Sub

Private Sub UsoDelProgramaToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles UsoDelProgramaToolStripMenuItem.Click

ayuda_Click(sender, e) 'Llama el procedimiento del botón ayuda.

End Sub

Private Sub AcercaDeGraficadosDeFuncionesMatemáticasToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AcercaDeGraficadosDeFuncionesMatemáticasToolStripMenuItem.Click

formulariodecreditos.Show()

Me.Hide()

End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles raicesconmetododelafalsaposicion.Click

formulariometododelafalsaposicion.Show()

Me.Hide()

formulariometododelafalsaposicion.textboxfuncion.Text = TextBox1.Text 'Al TextBox donde se introduce la función del formulario de la Falsa Posición para encontrar raíces, le está asignando o poniendo lo que hay en el TextBox1, que es la función para graficar.

End Sub

Private Sub Button1_Click_2(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

formulariometodonewtonraphson.Show()

Me.Hide()

formulariometodonewtonraphson.textboxfuncion.Text = TextBox1.Text 'Al TextBox donde se introduce la función del formulario de Newton-Raphson para encontrar raíces, le está asignando o poniendo lo que hay en el TextBox1, que es la función para graficar.

End Sub

End Class

 

 

 

 

Autor:

Jaime Montoya

Santa Ana, 25 de julio de 2008

El Salvador

Partes: 1, 2, 3, 4, 5, 6 >

Partes: 1, 2, 3, 4, 5, 6
 Página anterior Volver al principio del trabajoPágina siguiente