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
Página anterior | Volver al principio del trabajo | Página siguiente |