You are on page 1of 17

ANEXOS. Anexo A. DESCRIPCION DEL EQUIPO DE SECADO.

El equipo de secado neumtico que se construyo en el instituto de Investigaciones Mecnicas (IIMEC) para la realizacin del proceso de secado neumtico consta principalmente de 5 partes las cuales son: Estos 5 elementos constituyen el secador prototipo para la realizacin de las pruebas experimentales

Fig. 6.1 Fotografa del secador neumtico.

Fuente: [Elaboracin propia] a) Cicln de separacin solido gas. b) Tornillo de alimentacin sin fin para la alimentacin de quinua real. c) Ducto de secado para la deshidratacin de la quinua real. d) Calentador de aire para el aire de secado.

e) Ventilador de aire que alimenta el gas de secado al secador.

A continuacin se describe las partes del secador neumtico prototipo. a) Cicln de separacin solido gas. Este cicln fue construido en el instituto de investigaciones mecnica de ingeniera mecnica, se lo construyo con material de acero dulce, las piezas se unieron por medio de soldadura elctrica de electrodo E6013las dimensiones del cicln estn en la siguiente pagina.

b) Tornillo de alimentacin sin fin. El propsito de este aparato es el de alimentar el slido granular al secador neumtico de quinua por medio de un movimiento de tornillo, el cual ingresa el slido a la entrada del ducto de secado el dimetro interior de este transportador es de 5.2 cm la longitud de este ducto de alimentacin es de 13.5 cm, se lo puede operar por medio de una manivela que mide 19.2 cm desde el eje axial del tornillo sin hasta el extremo. El material del mencionado equipo es de hierro de fundicin.

Fig. 6.3 Tornillo de alimentacin sin fin.

Fuente: Elaboracin propia.

c) Ducto de secado para la deshidratacin de la quinua real. El ducto de secado del secador neumtico esta hecho de una tubera de acero galvanizado de 2 pulgadas es de cedula 40, la longitud de este ducto de secado es de 3 m tiene un dimetro interno de 52.94 mm d) Calentador de aire de secado. En esta zona se calienta el aire debido al calor liberado por la combustin de gas licuado de petrleo el cual es quemado por medio de un quemador atmosfrico, los gases de combustin se lo introducen en un recinto de calefaccin a la cual se expone un banco de tubos de tres pasos de 1.5 m de longitud para el calentamiento del aire que ingresa al ducto de secado. El rea de transmisin de calor de este banco de tubos es de 0.28 m2 El material del cual estn hechos estos tubos es de acero galvanizado de un dimetro nominal de 2 pulgadas. La unin de estos materiales se los realizo por medio de soldadura elctrica con electrodo E6013

Fig. 6.4 Calentador de aire de secado.

Fuente: elaboracin propia

e) Ventilador de aire que alimenta el gas de secado al secador. El ventilador elctrico tiene la funcin de disponer el aire de secado a partir del medio ambiente, este equipo consta de 6 velocidades diferentes para su funcionamiento. Este ventilador de mano ofrece hasta 80 mcph de caudal para flujo de aire, su tensin nominal es de 220-230 V de C.A.

Fig. 6.5 Ventilador del aire de secado.

Fuente: elaboracin propia

Anexo B. Determinacin de la densidad de quinua.

ANEXO C. Software psicomtrico utilizado para la determinacin de humedad absoluta del aire de secado en la ciudad de La Paz en la zona de Cota Cota ubicada a 3456 m.s.n.m.

Anexo D.

CODIFICACIN DEL PROGRAMA DE SIMULACIN.

Declaracin de variables En esta parte de la estructuracin se declaran las variables que se utilizan en el programa de simulacin se nombran todas las variables a hacer analizadas y tambin las variables para la resolucin del modelo, tambin se declaran las variables secundarias que intervienes en el proceso de simulacin.

Module Module1 Public M(10000, 10) As Double Public Pvi(100, 2), Vsi(100, 2), Kvi(100, 2), Kai(100, 2) As Double Public T1(), X1(), Y1(), Z1(), U1(), V1(), W1() As Double Public HX, k, K1, K2, kk, Pvx, Vsx, Kvx, Kax As Double Public paso, n, h, hpl As Double Public NroPuntos As Integer Public ky1, kz1, kx1, kx2, ky2, kz2, kx3, ky3, kz3, kx4, ky4, kz4 As Double Public ku1, kv1, kw1, ku2, kv2, kw2, ku3, kv3, kw3, ku4, kv4, kw4 As Double Public X0, T0, Y0, Z0, Tn, Xn, Yn, Zn, tem As Double Public Yi, Xi, F, G, Vgi, Vqi, L, Tgi, Tqi, to0, tf As Double Public Ky, Cb, Dab, Re, Sc, ug, Dq, deng, denq, Ys, ec1, ec2, ec3, lamVap, Ca, Cq, Cg, Kg, Pr, Kq, Cv, Lam0 As Double Public D, g1, eps, Vt, Vm, Lamp, Cd, Lamz, ff, dP As Double

Plantemiento del metodo de Runge-Kutta de 4to orden. En el siguiente cuadro se plantea el metodo numerico de solucion elegido el metodo de Runge-Kutta de cuarto orden para las seis ecuaciones diferenciales que se hallaron en el capitulo 4 (Modelo Adoptado) se plantea las ecuaciones para hallar las cuatro constantes del mtodo de Runge-Kutta
Sub RungeKutta() For i As Integer = 1 To n kx1 1, 4), M(i - 1, ky1 1, 4), M(i - 1, kz1 1, 4), M(i - 1, ku1 1, 4), M(i - 1, kv1 1, 4), M(i - 1, kw1 1, 4), M(i - 1, = paso * F0(M(i - 1, 5), M(i - 1, 6), M(i = paso * F1(M(i - 1, 5), M(i - 1, 6), M(i = paso * F2(M(i - 1, 5), M(i - 1, 6), M(i = paso * F3(M(i - 1, 5), M(i - 1, 6), M(i = paso * F4(M(i - 1, 5), M(i - 1, 6), M(i = paso * F5(M(i - 1, 5), M(i - 1, 6), M(i * F0(M(i 2, M(i M(i - 1, * F1(M(i 2, M(i M(i - 1, * F2(M(i 2, M(i M(i - 1, * F3(M(i 2, M(i M(i - 1, * F4(M(i 2, M(i M(i - 1, * F5(M(i 2, M(i M(i - 1, * F0(M(i 2, M(i M(i - 1, * F1(M(i 2, M(i M(i - 1, * F2(M(i 2, M(i M(i - 1, 1), M(i - 1, 7)) 1), M(i - 1, 7)) 1), M(i - 1, 7)) 1), M(i - 1, 7)) 1), M(i - 1, 7)) 1), M(i - 1, 7)) 1, 2), M(i - 1, 3), M(i 1, 2), M(i - 1, 3), M(i 1, 2), M(i - 1, 3), M(i 1, 2), M(i - 1, 3), M(i 1, 2), M(i - 1, 3), M(i 1, 2), M(i - 1, 3), M(i 2, M(i - 1, 2) + kx1 / M(i - 1, 5) + ku1 / 2, 2, M(i - 1, 2) + kx1 / M(i - 1, 5) + ku1 / 2, 2, M(i - 1, 2) + kx1 / M(i - 1, 5) + ku1 / 2, 2, M(i - 1, 2) + kx1 / M(i - 1, 5) + ku1 / 2, 2, M(i - 1, 2) + kx1 / M(i - 1, 5) + ku1 / 2, 2, M(i - 1, 2) + kx1 / M(i - 1, 5) + ku1 / 2,

kx2 = paso 2, M(i - 1, 3) + ky1 / M(i - 1, 6) + kv1 / 2, ky2 = paso 2, M(i - 1, 3) + ky1 / M(i - 1, 6) + kv1 / 2, kz2 = paso 2, M(i - 1, 3) + ky1 / M(i - 1, 6) + kv1 / 2, ku2 = paso 2, M(i - 1, 3) + ky1 / M(i - 1, 6) + kv1 / 2, kv2 = paso 2, M(i - 1, 3) + ky1 / M(i - 1, 6) + kv1 / 2, kw2 = paso 2, M(i - 1, 3) + ky1 / M(i - 1, 6) + kv1 / 2, kx3 = paso 2, M(i - 1, 3) + ky2 / M(i - 1, 6) + kv2 / 2, ky3 = paso 2, M(i - 1, 3) + ky2 / M(i - 1, 6) + kv2 / 2, kz3 = paso 2, M(i - 1, 3) + ky2 / M(i - 1, 6) + kv2 / 2,

- 1, 1) + paso / 1, 4) + kz1 / 2, 7) + kw1 / 2) - 1, 1) + paso / 1, 4) + kz1 / 2, 7) + kw1 / 2) - 1, 1) + paso / 1, 4) + kz1 / 2, 7) + kw1 / 2) - 1, 1) + paso / 1, 4) + kz1 / 2, 7) + kw1 / 2) - 1, 1) + paso / 1, 4) + kz1 / 2, 7) + kw1 / 2) - 1, 1) + paso / 1, 4) + kz1 / 2, 7) + kw1 / 2) - 1, 1) + paso / 1, 4) + kz2 / 2, 7) + kw2 / 2) - 1, 1) + paso / 1, 4) + kz2 / 2, 7) + kw2 / 2) - 1, 1) + paso / 1, 4) + kz2 / 2, 7) + kw2 / 2)

2, M(i - 1, 2) + kx2 / M(i - 1, 5) + ku2 / 2, 2, M(i - 1, 2) + kx2 / M(i - 1, 5) + ku2 / 2, 2, M(i - 1, 2) + kx2 / M(i - 1, 5) + ku2 / 2,

ku3 = paso 2, M(i - 1, 3) + ky2 / M(i - 1, 6) + kv2 / 2, kv3 = paso 2, M(i - 1, 3) + ky2 / M(i - 1, 6) + kv2 / 2, kw3 = paso 2, M(i - 1, 3) + ky2 / M(i - 1, 6) + kv2 / 2,

* F3(M(i 2, M(i M(i - 1, * F4(M(i 2, M(i M(i - 1, * F5(M(i 2, M(i M(i - 1,

- 1, 1) + paso / 1, 4) + kz2 / 2, 7) + kw2 / 2) - 1, 1) + paso / 1, 4) + kz2 / 2, 7) + kw2 / 2) - 1, 1) + paso / 1, 4) + kz2 / 2, 7) + kw2 / 2)

2, M(i - 1, 2) + kx2 / M(i - 1, 5) + ku2 / 2, 2, M(i - 1, 2) + kx2 / M(i - 1, 5) + ku2 / 2, 2, M(i - 1, 2) + kx2 / M(i - 1, 5) + ku2 / 2,

kx4 = paso * 1, 3) + ky3, M(i - 1, 4) - 1, 7) + kw3) ky4 = paso * 1, 3) + ky3, M(i - 1, 4) - 1, 7) + kw3) kz4 = paso * 1, 3) + ky3, M(i - 1, 4) - 1, 7) + kw3) ku4 = paso * 1, 3) + ky3, M(i - 1, 4) - 1, 7) + kw3) kv4 = paso * 1, 3) + ky3, M(i - 1, 4) - 1, 7) + kw3) kw4 = paso * 1, 3) + ky3, M(i - 1, 4) - 1, 7) + kw3) kx4)

F0(M(i - 1, 1) + paso, M(i - 1, 2) + kx3, M(i + kz3, M(i - 1, 5) + ku3, M(i - 1, 6) + kv3, M(i F1(M(i - 1, 1) + paso, M(i - 1, 2) + kx3, M(i + kz3, M(i - 1, 5) + ku3, M(i - 1, 6) + kv3, M(i F2(M(i - 1, 1) + paso, M(i - 1, 2) + kx3, M(i + kz3, M(i - 1, 5) + ku3, M(i - 1, 6) + kv3, M(i F3(M(i - 1, 1) + paso, M(i - 1, 2) + kx3, M(i + kz3, M(i - 1, 5) + ku3, M(i - 1, 6) + kv3, M(i F4(M(i - 1, 1) + paso, M(i - 1, 2) + kx3, M(i + kz3, M(i - 1, 5) + ku3, M(i - 1, 6) + kv3, M(i F5(M(i - 1, 1) + paso, M(i - 1, 2) + kx3, M(i + kz3, M(i - 1, 5) + ku3, M(i - 1, 6) + kv3, M(i

M(i, 2) = M(i - 1, 2) + 1 / 6 * (kx1 + 2 * kx2 + 2 * kx3 + M(i, 3) = M(i - 1, 3) + 1 / 6 * (ky1 + 2 * ky2 + 2 * ky3 + ky4) M(i, 4) = M(i - 1, 4) + 1 / 6 * (kz1 + 2 * kz2 + 2 * kz3 + kz4) M(i, 5) = M(i - 1, 5) + 1 / 6 * (ku1 + 2 * ku2 + 2 * ku3 + ku4) M(i, 6) = M(i - 1, 6) + 1 / 6 * (kv1 + 2 * kv2 + 2 * kv3 + kv4) M(i, 7) = M(i - 1, 7) + 1 / 6 * (kw1 + 2 * kw2 + 2 * kw3 + kw4) T0 = M(i - 1, 1) + paso M(i, 1) = T0 Next i End Sub

Planteamiento de las ecuaciones del algoritmo del capitulo 5 En esta parte de la estructuracion del programa de simulacion se plantea las 24 ecuaciones que se plantearon en capitulo 5 (algoritmo empleado). Como se ve en el capitulo 5 se encuentra un conjunto de seis ecuaciones diferenciales ordinarias mas ecuaciones secuandarias que ayudan a resolver el modelo planteado.

Function F0(ByVal t As Double, ByVal Xq As Double, ByVal Y As Double, ByVal Tq As Double, ByVal Tg As Double, ByVal Vg As Double, ByVal Vq As Double) As Double Dab = 0.000000642 * (Tg) ^ (3 / 2) ' para viscosidad For i As Integer = 1 To 19 If Tg > Vsi(i, 1) Then Else If Tg = Vsi(i, 1) Then Vsx = Vsi(i, 2) i = 19 Else Vsx = Vsi(i - 1, 2) + (Tg - Vsi(i - 1, 1)) * (Vsi(i + 1, 2) - Vsi(i - 1, 2)) / (Vsi(i + 1, 1) - Vsi(i - 1, 1)) i = 19 End If End If Next i ug = Vsx ' interpolar ' para presion de vapor For i As Integer = 1 To 19 If Tg > Pvi(i, 1) Then Else If Tg = Pvi(i, 1) Then Pvx = Pvi(i, 2) i = 19 Else Pvx = Pvi(i - 1, 2) + (Tg - Pvi(i - 1, 1)) * (Pvi(i + 1, 2) - Pvi(i - 1, 2)) / (Pvi(i + 1, 1) - Pvi(i - 1, 1)) i = 19 End If End If Next i deng = 229.87 / (Tg) Sc = ug / (deng * Dab) 'Pvx = 43 'interpolar f(t)

Cb = 3.5 * (Pvx) / (Tg) Dq = 0.001738

denq = 10000 Ys = 0.624 * (Pvx) / (66 - (Pvx)) Re = (Vg - Vq) * deng * Dq / ug Ky = Cb * Dab / Dq * (2 + 0.6 * Re ^ (1 / 2) * Sc ^ (1 / 3)) F0 = (6 * Ky * (-Y + Ys) / (denq * Dq)) / Vg End Function Function F1(ByVal t As Double, ByVal Xq As Double, ByVal Y As Double, ByVal Tq As Double, ByVal Tg As Double, ByVal Vg As Double, ByVal Vq As Double) As Double F1 = (+F / G * (6 * Ky * (-Y + Ys) / (denq * Dq))) / Vg End Function Public Function F2(ByVal t As Double, ByVal Xq As Double, ByVal Y As Double, ByVal Tq As Double, ByVal Tg As Double, ByVal Vg As Double, ByVal Vq As Double) As Double lamVap = 2415 Ca = 4.186 Cg = 1000 ' para presion de Kg For i As Integer = 1 To 19 If Tg > Kvi(i, 1) Then Else If Tg = Kvi(i, 1) Then Kvx = Kvi(i, 2) i = 19 Else Kvx = Kvi(i - 1, 2) + (Tg - Kvi(i - 1, 1)) * (Kvi(i + 1, 2) - Kvi(i - 1, 2)) / (Kvi(i + 1, 1) - Kvi(i - 1, 1)) i = 19 End If End If Next i Cq = 1.83096 + 0.00159364 * (Tq - 273) - 0.000003936 * (Tq - 273) ^ 2 ' para presion de Kg For i As Integer = 1 To 15 If Tg > Kai(i, 1) Then Else If Tg = Kai(i, 1) Then Kax = Kvi(i, 2) i = 15 Else Kax = Kai(i - 1, 2) + (Tg - Kai(i - 1, 1)) * (Kai(i + 1, 2) - Kai(i - 1, 2)) / (Kai(i + 1, 1) - Kai(i - 1, 1)) i = 15 End If

End If Next i Kq = kax + Y * (kvx) Pr = ug * Cg / Kq h = Kq / Dq * (2 + 0.6 * Re ^ (1 / 2) * Pr ^ (1 / 3)) F2 = ((6 * h * (Tg - Tq) - 6 * Ky * (lamVap + Ca * (Tq - Tqi))) / ((Cq + Ca * Xq) * denq * Dq) - (Ca * Tq * (6 * Ky * (-Y + Ys) / (denq * Dq)) / (Cq + Ca * Xq))) / Vg End Function Function F3(ByVal t As Double, ByVal Xq As Double, ByVal Y As Double, ByVal Tq As Double, ByVal Tg As Double, ByVal Vg As Double, ByVal Vq As Double) As Double Cv = 1.925 Lam0 = 2500 F3 = (-F / G * ((Ca * Tq * (6 * Ky * (-Y + Ys) / (denq * Dq))) / (Cg + Cv * Y) + ((Cq + Ca * Xq) / (Cg + Cv * Y) * ((6 * h * (Tg - Tq) - 6 * Ky * (lamVap + Ca * (Tq - Tqi))) / ((Cq + Ca * Xq) * denq * Dq) - (Ca * Tq * (6 * Ky * (-Y + Ys) / (denq * Dq)) / (Cq + Ca * Xq)))) - ((Cv * Tg + Lam0) / (Cg + Cv * Y) * (-F / G * 6 * Ky * (-Y + Ys) / (denq * Dq))))) / Vg End Function Function F4(ByVal t As Double, ByVal Xq As Double, ByVal Y As Double, ByVal Tq As Double, ByVal Tg As Double, ByVal Vg As Double, ByVal Vq As Double) As Double g1 = 9.81 Vm = Vgi * (1 - 0.68 * Dq ^ 0.92 * denq ^ 0.5 * deng ^ -0.2 * D ^ -0.54) eps = 1 - F / (Math.PI * D ^ 2 * denq * Vm / 4) Vt = (0.153 * Dq ^ 1.14 * g1 ^ 0.71 * (denq - deng) ^ 0.71) / (ug ^ 0.143 * deng ^ 0.29) Lamp = 0.0126 * ((1 - eps) / eps) * (((1 - eps) * Vt) / (Vg Vq)) ^ 0.979 If Re < 260 Then Cd = 24 / Re * (1 + 0.1935 * Re ^ 0.6305) End If If Re > 260 Then Cd = 10 ^ (1.6435 - 1.124 * Math.Log10(Re) + 0.1558 * (Math.Log10(Re)) ^ 2) End If F4 = ((3 * Cd * deng / (4 * Dq * denq) * (Vg - Vq) ^ 2 - Lamp * Vq ^ 2 / (2 * D) - g1)) / Vg End Function Public Function F5(ByVal t As Double, ByVal Xq As Double, ByVal Y As Double, ByVal Tq As Double, ByVal Tg As Double, ByVal Vg As Double, ByVal Vq As Double) As Double

Lamz = 4 * 0.0285 ff = 0.079 * Re ^ dP = deng * eps * eps) * Vm ^ 2 / (2 * D) +

* (g1 * D) ^ 0.5 / Vm -0.25 g1 + denq * (1 - eps) * g1 + lamz * denq * (1 2 * ff * deng * eps * Vgi / D

F5 = (+(3 * Cd * deng * (Vg - Vq) ^ 2 / (4 * Dq * denq)) - g1 - 2 * ff * Vg ^ 2 / (2 * g1) + dP / deng) / Vg End Function End Module

Graficas de la solucion del modelo planteado. En esta parte de la Codificacin del programa se definen las graficas de las

diferentes variables que estan siendo analizadas como son la humedad de la quinua real, la humedad absoluta del aire, la temperatura de la quinua, la temperatura del aire de secado, la velocidad de los granos de quinua, la velocidad del aire de secado. Toda estas varibles analizadas se las grafica en funcion de la temperatura.
Dim Dim Dim Dim Dim Dim Dim Sub control As PictureBox Xmin, Xmax, Ymin, Ymax, fx, fy As Double Px, Py, Px1, Py1 As Integer puntos(3) As Integer area As Graphics titulo, tituloX, tituloY As String limitador As Rectangle New(ByVal controldetrabjo As PictureBox) control = controldetrabjo area = control.CreateGraphics

End Sub Public Sub graficar(ByVal Vx() As Double, ByVal Vy() As Double) 'los valores para esta funcion seran 'xmin sera siempre el primer valor del vector en X Xmin = Minimo(Vx) 'el maximo siempre sera el ultimo valor en el vector X Xmax = Maximo(Vx) 'Los valores de Ymin y Ymax deberian ser buscados para este ejemplo nos daremos valores al azar Ymin = Minimo(Vy) Ymax = Maximo(Vy) 'luego calculamos las relaciones fx , fy fx = control.Width / (Xmax - Xmin) fy = control.Height / (Ymax - Ymin) 'Luego podemos graficar 'primero se debe definir un area de graficacion 'luego siempre se debe borrar el area de graficos For i As Integer = 0 To Vx.Length - 2 Px = (Vx(i) - Xmin) * fx Py = control.Height + (Ymin - Vy(i)) * fy area.DrawEllipse(Pens.Black, Px, Py, 1, 1) Next End Sub Public Sub graficar1(ByVal colordepunto As Pen, ByVal Vx() As Double, ByVal Vy() As Double, ByVal unidadejeX As Double, ByVal unidadejeY As Double) 'los valores para esta funcion seran 'xmin sera siempre el primer valor del vector en X Xmin = Minimo(Vx) 'el maximo siempre sera el ultimo valor en el vector X Xmax = Maximo(Vx)

'Los valores de Ymin y Ymax deberian ser buscados para este ejemplo nos daremos valores al azar Ymin = Minimo(Vy) Ymax = Maximo(Vy) 'luego calculamos las relaciones fx , fy fx = control.Width * 0.75 / (Xmax - Xmin) fy = control.Height * 0.6 / (Ymax - Ymin) 'Luego podemos graficar 'primero se debe definir un area de graficacion 'luego siempre se debe borrar el area de graficos Call cuadro() Call coordenadas(Xmin, Ymin, Xmax, Ymax, unidadejeX, unidadejeY) For i As Integer = 0 To Vx.Length - 2 Px = control.Width * 0.2 + (Vx(i) - Xmin) * fx Py = control.Height + (Ymin - Vy(i)) * fy - control.Height * 0.2 'louys area.DrawEllipse(colordepunto, Px, Py, 1, 1) Next End Sub Public Sub graficar1(ByVal colordepunto As Pen, ByVal colordelinea As Pen, ByVal Vx() As Double, ByVal Vy() As Double, ByVal unidadejeX As Double, ByVal unidadejeY As Double) 'los valores para esta funcion seran 'xmin sera siempre el primer valor del vector en X Xmin = Minimo(Vx) 'el maximo siempre sera el ultimo valor en el vector X Xmax = Maximo(Vx) 'Los valores de Ymin y Ymax deberian ser buscados para este ejemplo nos daremos valores al azar Ymin = Minimo(Vy) Ymax = Maximo(Vy) 'luego calculamos las relaciones fx , fy fx = control.Width * 0.75 / (Xmax - Xmin) fy = control.Height * 0.6 / (Ymax - Ymin) 'Luego podemos graficar 'primero se debe definir un area de graficacion 'luego siempre se debe borrar el area de graficos Call cuadro() Call coordenadas(Xmin, Ymin, Xmax, Ymax, unidadejeX, unidadejeY) For i As Integer = 0 To Vx.Length - 2 Px = control.Width * 0.2 + (Vx(i) - Xmin) * fx Py = control.Height + (Ymin - Vy(i)) * fy - control.Height * 0.2 area.DrawEllipse(colordepunto, Px, Py, 1, 1) Next For i As Integer = 1 To Vx.Length - 2 If i < 900 Then Px = control.Width * 0.2 + (Vx(i - 1) - Xmin) * fx Py = control.Height + (Ymin - Vy(i - 1)) * fy control.Height * 0.2 Px1 = control.Width * 0.2 + (Vx(i) - Xmin) * fx Py1 = control.Height + (Ymin - Vy(i)) * fy control.Height * 0.2 area.DrawLine(colordelinea, Px, Py, Px1, Py1)

End If Next End Sub Private Sub cuadro() puntos(0) = 0.2 * control.Width 'px puntos(1) = 0.2 * control.Height 'py puntos(2) = 0.75 * control.Width puntos(3) = 0.6 * control.Height limitador = New Rectangle(puntos(0), puntos(1), puntos(2), puntos(3)) area.DrawRectangle(Pens.Black, limitador) End Sub Public Sub Borrar(ByVal colordeborrado As Color) area.Clear(colordeborrado) End Sub Public Sub ejeX(ByVal letra As String) Dim fuente As Font Dim tamao As Double fuente = New Font("Arial", 12, FontStyle.Bold) tituloX = letra tamao = area.MeasureString(tituloX, fuente).Width area.DrawString(tituloX, fuente, Brushes.Blue, (control.Width tamao) / 2, 0.9 * control.Height) End Sub Public Sub ejeY(ByVal letra As String) Dim fuente As Font Dim tamao As Double Dim format1 As New StringFormat(StringFormatFlags.DirectionVertical) fuente = New Font("Arial", 12, FontStyle.Bold) tituloY = letra tamao = area.MeasureString(tituloY, fuente).Width area.DrawString(tituloY, fuente, Brushes.Blue, 0.05 * control.Width, (control.Height - tamao) / 2, format1) End Sub Public Sub Titular(ByVal letra As String) Dim fuente As Font Dim tamao As Double fuente = New Font("Arial", 12, FontStyle.Bold) titulo = letra tamao = area.MeasureString(titulo, fuente).Width area.DrawString(titulo, fuente, Brushes.Blue, (control.Width tamao) / 2, 0) End Sub Public Sub coordenadas(ByVal Xminimo As Double, ByVal Yminimo As Double, ByVal Xmaximo As Double, ByVal Ymaximo As Double, ByVal unidadX As Double, ByVal unidadY As Double) Dim letra As String Dim fuente As Font fuente = New Font("Arial", 10, FontStyle.Bold) Py = control.Height + (Ymin - Yminimo) * fy - control.Height * 0.2

Py1 = control.Height + (Ymin - Ymaximo) * fy - control.Height * 0.2 For i As Double = Xminimo To Xmaximo Step unidadX Px = control.Width * 0.2 + (i - Xmin) * fx area.DrawLine(Pens.Black, Px, Py, Px, Py1) letra = Format(i, "0.0") area.DrawString(letra, fuente, Brushes.Green, Px, Py + 20) Next Px = control.Width * 0.2 + (Xminimo - Xmin) * fx Px1 = control.Width * 0.2 + (Xmaximo - Xmin) * fx For i As Double = Yminimo To Ymaximo Step unidadY Py = control.Height + (Ymin - i) * fy - control.Height * 0.2 area.DrawLine(Pens.Black, Px, Py, Px1, Py) letra = Format(i, "0.00") area.DrawString(letra, fuente, Brushes.Green, Px - 40, Py) Next End Sub Private Dim min For Function Minimo(ByVal Vector() As Double) As Double min As Double = Vector(0) i As Integer = 1 To Vector.Length - 1 If min > Vector(i) Then min = Vector(i) End If

Next Minimo = min End Function Private Function Maximo(ByVal Vector() As Double) As Double Dim may As Double may = Vector(0) For i As Integer = 1 To Vector.Length - 1 If may < Vector(i) Then may = Vector(i) End If Next Maximo = may End Function End Class

You might also like