Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Física De Una Pelota En Un Entorno Genérico 2D
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Física De Una Pelota En Un Entorno Genérico 2D 
 
Buenas!.

He implementado un código del curso de Python a Gambas.
Lo hice lo más parecido. Esta vez, la pelota rebota tanto en un dominio o entorno rectangular como circular.

Dominio rectangular:
 dominiorectangular

Dominio circular:
 dominiocircular

La idea principal del código es demostrar el uso una vez más de la programación orientada a objetos.
Tenemos tres clases.  Y no modificamos "para nada" el código de la clase "Pelota" para hacer uso
de los dos tipos de dominios.

Quiero comentar también, que no existe una clase padre Dominio. Ya que el código de los dos dominios son distintos.
Os muestro el FMain:

Private bola As Pelota  
Private dominio As Variant

Public Sub Form_Open()
  
  Me.Title = "Pelota en entorno 2D"
  Randomize
  
  Menu()
  
End

Public Sub Menu()
  
  Dim respuesta As Integer
  
  respuesta = Message.Question("¿ Qué tipo de dominio quieres ?", "Circular", "Rectangular")
  
  Select Case respuesta
    Case 1  
      dominio = New DominioCircular([Comun.ANCHO / 2, Comun.ALTO / 2], 180)
      bola = New Pelota(Comun.radio, Color.White, dominio)
    Case 2
      dominio = New DominioRectangular(Comun.ANCHO, Comun.ALTO)
      bola = New Pelota(Comun.radio, Color.White, dominio)
  End Select  
  
  Timer1.Start
  
End

Public Sub Canvas_Draw()
  
  bola.Actualizar()
  dominio.dibujar()
  bola.Dibujar()
  
End

Public Sub Timer1_Timer()
  
  Canvas.Refresh()
  
End

Public Sub Form_Close()
  
  Dim respuesta As Integer
  
  Timer1.Stop  
  bola = Null
  dominio = Null    
  respuesta = Message.Question("¿ Desea salir ?", "Salir", "Probar otro dominio")
  
  Select Case respuesta
    Case 1    
      Me.Close
    Case 2            
      Menu()  
      Stop Event    
  End Select
  
End

Public Sub Form_KeyPress()

  Me.Close

End
 


Como veis he usado el tipo Variant.

Ademas de las tres clases hice uso de un modulo donde he añadido algunas funciones y valores comunes por defecto.
Opinen para que aprendamos todos.  

P.d tuve que usar tipo Float. Como sabéis en Python los tipos de datos no se definen y a la hora de la conversión es un poco complicado.
La pelota se escapaba por los bordes, al no coincidir los decimales.

PelotaFisicaEntornoGenerico2D.tar.gz
Descripción: Objeto en un entorno 2D con distinto tipo de dominio o alcance 
Descargar
Nombre del archivo: PelotaFisicaEntornoGenerico2D.tar.gz
Tamaño: 13.63 KB
Descargado: 24 veces
PelotaFisicaEntornoGenerico2D.tar.gz
Descripción: Objeto en un entorno 2D con distinto tipo de dominio o alcance 
Descargar
Nombre del archivo: PelotaFisicaEntornoGenerico2D.tar.gz
Tamaño: 13.63 KB
Descargado: 24 veces
PelotaFisicaEntornoGenerico2D.tar.gz
Descripción: Objeto en un entorno 2D con distinto tipo de dominio o alcance 
Descargar
Nombre del archivo: PelotaFisicaEntornoGenerico2D.tar.gz
Tamaño: 13.63 KB
Descargado: 24 veces

 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
última edición por Shell el Viernes, 25 Marzo 2016, 21:35; editado 1 vez 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Física De Una Pelota En Un Entorno Genérico 2D 
 
¿ Qué opinión tenéis de ese Fom_Close ?

En este caso solo es una pregunta sencilla, o es redondo o es rectangular el dominio. O salir, claro.
También di la posibilidad de cerrar el formulario con la tecla Escape.

Puede que el código de escoger el dominio o cerrar, debería estar fuera del Form_Close.

Al principio me encontraba el problema de que como el Select Case estaba dentro del Form_Close,
si no se paraba el evento y querías escoger otro tipo de dominio, el formulario se cerraba antes.

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Física De Una Pelota En Un Entorno Genérico 2D 
 
Shell:


Citar:
"Quiero comentar también, que no existe una clase padre Dominio. Ya que el código de los dos dominios son distintos.Como veis he usado el tipo Variant."

Se puede crear una clase padre dominio, de la que hereden la clases DominioRectangulo y DominioCirculo.
Esa clase domino tiene los método creados pero sin código.

¿donde estas mirando estos ejemplos de python?

Saludos
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Física De Una Pelota En Un Entorno Genérico 2D 
 
interesante!

+1
 




===================
Software libre, programación libre, vida libre es la Public function Libertad()as Invendible
Proyectos: VisorRV1960,Taller2015,Tanteador
https://sourceforge.net/u/v3ctor-full/profile/
Blog: http://novatocodegambas.blogspot.com.uy/
 
v3ctor - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Física De Una Pelota En Un Entorno Genérico 2D 
 
Julio:
Citar:

Esa clase domino tiene los método creados pero sin código.


Si, eso si se podría hacer.
 
Citar:

¿donde estas mirando estos ejemplos de python?


Son del curso que hicimos ya hace un tiempo de Python.
No encuentro el ejemplo en su página, pero te lo puedo subir a CodeSkulptor y te doy el enlace.
No es difícil. A ver, aquí tienes el enlace.

ball physics code for generic 2D domain

Si quieres ejecutarlo, baja hasta abajo la barra vertical. Ahí veras que está activo el dominio rectangular.
Comenta el rectangular con el "#" y descomenta el del dominio circular.

field = RectangularDomain(width, height)
#field = CircularDomain([width/2, height/2], 180)
ball = Ball(radius, color, field)
 


La función matemática que usa de ayuda . Dot, (punto) ahora no recuerdo a que formula hace referencia.
Puede que a un vector. No parece la formula de distancia entre dos puntos.

# math helper function
def dot(v, w):
    return v[0] * w[0] + v[1] * w[1]
 


No se parece a esto:

Modulo de un vector. Distancia entre dos puntos

Encontraras más ejemplos y demos en la página de CodeSkulptor.

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Pantalla Propiedades Del Proyecto: Entorno jsbsan General 4 Jueves, 09 Diciembre 2010, 17:26 Ver último mensaje
jsbsan
No hay nuevos mensajes Manejo De Variables De Entorno Shell Shell Scripting 1 Jueves, 13 Marzo 2014, 01:03 Ver último mensaje
alunado
No hay nuevos mensajes Error De Entorno Grafico jarrypalacios Controles/Librerías/Componentes 1 Domingo, 20 Abril 2014, 17:45 Ver último mensaje
jguardon
No hay nuevos mensajes Variables De Entorno Shell Mundo Linux 0 Miercoles, 09 Enero 2019, 10:39 Ver último mensaje
Shell
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron