Br.
Publicado por Iharob Al Asimi (2 intervenciones) el 11/10/2007 16:25:22
Hola soy estudiante de física, hace un tiempo me había preguntado, como hacer la representación gráfica de una función de dos variables (3D), usando visual basic. Descubrí que es posible con una simple suma de vectores. esa explicación la puedo enviar si alguien me la pide porque es tedioso escribirla para el foro. Lo que hay que hacer es lo siguiente.
En un formulario creamos un control Picture_Box.
Declaramos en el Módulo
Public Theta, Phi
Luego construimos estas funciones en un módulo
'Para transformar de Grados a Radianes.
Public Function Radianes (Angulo)
Radianes = Angulo * ( 180 / 3.141592654 ) ' 3.141592654 es el valor de Pi, puede ser mas preciso si quieren
End Function
'Para dibujar puntos de 3D en un plano 2D
Public Function X_Bidimensional (x, y, z)
X_Bidimensional = (y * Cos (Phi)) - (x * Cos (Theta))
End Function
Public Function Y_Bidimensional (x, y, z)
Y_Bidimensional = z - ((x * Sin(Theta)) + (y * Sin(Phi)))
End Function
Public Function f (x, y, z)
f = Exp(-(x^2 + y^2)) ' Esto es una función de dos variables PUEDE SER CUALQUIERA
End Function
Ahora en el Evento Form_Load()
Private Sub Form_Load()
Theta = Radianes (25)
Phi = Radianes (15)
With Picture_Box
.Scale = (-10, -10)-(10, 10) 'Los Límites del espacio donde se va a graficar
' Los ejes de coordenadas
.Line (X_Bidimensional(0, 0, 8), Y_Bidimensional(0, 0, 8))-(0, 0) 'Z
.Line (X_Bidimensional(0, 8, 0), Y_Bidimensional(0, 8, 0))-(0, 0) 'Y
.Line (X_Bidimensional(8, 0, 0), Y_Bidimensional(8, 0, 0))-(0, 0) 'X
'La Gráfica de la función
For x = -8 to 8 Step 0.02
For y = -8 to 8 Step 0.5
z= f (x, y, z)
.Line (X_Bidimensional(x, y, z), Y_Bidimensional(x, y, z))-(X_Bidimensional(x, y, z) + 0.1, Y_Bidimensional(x, y, z) + 0.1) , vbBlue
Next
Next
' Ahora se gráfica transversal a la primera vez, para ver la gráfica cuadriculada
For x = -8 to 8 Step 0.5
For y = -8 to 8 Step 0.03
z= f (x, y, z)
.Line (X_Bidimensional(x, y, z), Y_Bidimensional(x, y, z))-(X_Bidimensional(x, y, z) + 0.1, Y_Bidimensional(x, y, z) + 0.1) , vbBlue
Next
Next
End With
End Sub
No se ve profundidad en el dibujo, pero para fines de analísis es bastante útil....
En un formulario creamos un control Picture_Box.
Declaramos en el Módulo
Public Theta, Phi
Luego construimos estas funciones en un módulo
'Para transformar de Grados a Radianes.
Public Function Radianes (Angulo)
Radianes = Angulo * ( 180 / 3.141592654 ) ' 3.141592654 es el valor de Pi, puede ser mas preciso si quieren
End Function
'Para dibujar puntos de 3D en un plano 2D
Public Function X_Bidimensional (x, y, z)
X_Bidimensional = (y * Cos (Phi)) - (x * Cos (Theta))
End Function
Public Function Y_Bidimensional (x, y, z)
Y_Bidimensional = z - ((x * Sin(Theta)) + (y * Sin(Phi)))
End Function
Public Function f (x, y, z)
f = Exp(-(x^2 + y^2)) ' Esto es una función de dos variables PUEDE SER CUALQUIERA
End Function
Ahora en el Evento Form_Load()
Private Sub Form_Load()
Theta = Radianes (25)
Phi = Radianes (15)
With Picture_Box
.Scale = (-10, -10)-(10, 10) 'Los Límites del espacio donde se va a graficar
' Los ejes de coordenadas
.Line (X_Bidimensional(0, 0, 8), Y_Bidimensional(0, 0, 8))-(0, 0) 'Z
.Line (X_Bidimensional(0, 8, 0), Y_Bidimensional(0, 8, 0))-(0, 0) 'Y
.Line (X_Bidimensional(8, 0, 0), Y_Bidimensional(8, 0, 0))-(0, 0) 'X
'La Gráfica de la función
For x = -8 to 8 Step 0.02
For y = -8 to 8 Step 0.5
z= f (x, y, z)
.Line (X_Bidimensional(x, y, z), Y_Bidimensional(x, y, z))-(X_Bidimensional(x, y, z) + 0.1, Y_Bidimensional(x, y, z) + 0.1) , vbBlue
Next
Next
' Ahora se gráfica transversal a la primera vez, para ver la gráfica cuadriculada
For x = -8 to 8 Step 0.5
For y = -8 to 8 Step 0.03
z= f (x, y, z)
.Line (X_Bidimensional(x, y, z), Y_Bidimensional(x, y, z))-(X_Bidimensional(x, y, z) + 0.1, Y_Bidimensional(x, y, z) + 0.1) , vbBlue
Next
Next
End With
End Sub
No se ve profundidad en el dibujo, pero para fines de analísis es bastante útil....
Valora esta pregunta


0