• Viernes 15 de Noviembre de 2024, 07:29

Autor Tema:  Algoritmo De Bresenham  (Leído 13781 veces)

el__dick

  • Nuevo Miembro
  • *
  • Mensajes: 17
    • Ver Perfil
Algoritmo De Bresenham
« en: Sábado 23 de Diciembre de 2006, 12:13 »
0
Aver me explico,toy implementando un pekeño tenis en ensamblador y me olbigan a utilizar este o otro tipo e algoritmos q cambien los rebotes xq sino la partida como q es muy aburrida, e implementao el algoritmo de Bresenham en ensamblador pero ahora no se como utilizarlo xq este algoritmo de basa en la diferencias entre las coordenadas X de dos puntos, pero claro tu cuando rebota la bola no sabes cual es el siguiente rebote ni nada de eso, estoy atrancado en esta parte, si alguien lo a utilizao o sabe como acerlo me gustaría q me exase una mano.
Espero noticias. GRACIAS.

el__dick

  • Nuevo Miembro
  • *
  • Mensajes: 17
    • Ver Perfil
Re: Algoritmo De Bresenham
« Respuesta #1 en: Domingo 24 de Diciembre de 2006, 12:17 »
0
No leais tantoy contestar aunq sean ideas q este toy to atrancao y x mas q pienso no se x donde seguir, enga os dejo q sigais pensando  :P

ADIOS :kicking:

ArKaNtOs

  • Miembro de PLATA
  • *****
  • Mensajes: 1253
  • Nacionalidad: mx
    • Ver Perfil
Re: Algoritmo De Bresenham
« Respuesta #2 en: Domingo 24 de Diciembre de 2006, 20:35 »
0
tu problema no es el lenguaje sino la lógica, en cuanto al algoritmo de bresenham es solo un algoritmo para crear lineas sin errores, ahora se supone que tu debes de saber siempre las coordenadas de donde se encuentra la bola sino como es que se esta moviendo?, cuando tu dices que no sabes hacia donde se va a ir la pelota, pues supongo que has hecho una macro para calcular este proceso, además ese es parte del algoritmo darle unas coordenadas iniciales y unas finales, en el caso del pong, estas coordenadas pueden ser interrumpidas si la barra golpea la bola no es así?, solo es ir pensando en ello :)

el__dick

  • Nuevo Miembro
  • *
  • Mensajes: 17
    • Ver Perfil
Re: Algoritmo De Bresenham
« Respuesta #3 en: Lunes 25 de Diciembre de 2006, 13:09 »
0
Claro,yo lo q he exo es ir sumando uno a cada componente, x e y de la bola y en el momento q llegue a los limites de la pantalla pos multiplicar por -1 el incremento de la x o de la y, la q en ese momento este en los limites. Pero aún así sigo sin saber como integrar el algoritmo,q tendría q acer pasarlo para el punto en el que esta?, x ejemplo (x,y), y para el siguiente  q sería (x+incremento,y+incremento)? lo malo de esto esq kizás el siguiente punto este antes q el inicial x lo tanto la diferencia en las X sería negativa y así el algoritmo no funciona...........jaja vaya mierda de rayadas navideñas jaja. Te paso mi subrutina para el movimiento de la pelota y si tienes alguna duda de como integrarlo dejamlo indicao o algo. Tiene algunos fallilos todavia la función pero en general esta bien,pero no tiene salida jaja aora mismo la bola se mueve eternamente :P
Bueno GRACIAS x preocuparte.

Código: Text
  1.  
  2. rebotes proc
  3.  
  4.   push ax
  5.   push dx
  6.   mov ax,0A000h
  7.   mov es,ax
  8.   mov ax,158
  9.   mov dx,98
  10. rebota:            &#59; al final tendr‚ q acer popdx popax cuando salga de la funcion
  11.   jmp comprueba
  12.   jmp incrementapunto
  13.    sigue:
  14.   bola ax,dx
  15.   push cx
  16.   push bx   &#59;nose xq ago esto pero ace q funcione
  17.   mov cx,50&#59; 1 s
  18.   mov bx,596;--> esta instruccion lo casca to; 1/200 s
  19. Bucle_1_segundo:
  20.     call  Retardo
  21.     loop  Bucle_1_segundo
  22.   pop bx    &#59;es necesareo para q funcione
  23.   pop cx
  24.   borrar_bola ax,dx
  25.   jmp rebota
  26.  
  27. comprueba:
  28.     cmp ax,319
  29.     jz rebotaX
  30.     cmp ax,1
  31.     jz rebotaX
  32.  compruebay:
  33.     cmp dx,167
  34.     jz rebotaY
  35.     cmp dx,1
  36.     jz rebotaY
  37.  
  38. incrementapunto:
  39.     add ax,incrementox
  40.     add dx,incrementoy
  41.     jmp sigue
  42.  
  43. rebotaX:
  44.   neg incrementox
  45.   jmp compruebay
  46.  
  47.  
  48. rebotaY:
  49.   neg incrementoy
  50.   jmp incrementapunto
  51.  
  52. rebotes endp
  53.  
  54.  

BlackWind

  • Miembro activo
  • **
  • Mensajes: 89
    • Ver Perfil
Re: Algoritmo De Bresenham
« Respuesta #4 en: Sábado 6 de Enero de 2007, 08:10 »
0
que tal,

algo sencillo que se me ocurre es:

1.- En cuanto la bola rebote con la barra, generes un punto aleatorio en X con el borde superior o inferior de la pantalla
es decir, suponiendo que la pantalla mide  400x300, el punto aleatorio X siempre estaria entre 0 y 400 y el punto en Y siempre seria o  0 o 300, ejemplos:
(10,0), (55,0), (315,300)

2.- Ya tienes el nuevo punto XY y tambien tienes el punto XY de la bola, ya con eso puedes implementar el algoritmo de bresenham y que la bola vaya moviendose por todos los puntos que genera el algoritmo....

Nota: que esos pasos solo se hagan cuando la pelota choca con la barra, porque si tambien se hace cuando choca con la pared de arriba o de abajo, podria generar direcciones muy extrañas......

saludos,

el__dick

  • Nuevo Miembro
  • *
  • Mensajes: 17
    • Ver Perfil
Re: Algoritmo De Bresenham
« Respuesta #5 en: Sábado 6 de Enero de 2007, 11:02 »
0
MIL GRACIA!!!! es mu wena idea,voy a pensarla jja q todavia no la e asimilao y veo como implementarlo, q la tengo q entregar esta semana q entra no la siguiente jaja y tengo q perfeccionar la bola,gracias x todo  ;)

Oceano

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
    • https://sites.google.com/site/proyectosroboticos/Descargar-Simuladores
Re: Algoritmo De Bresenham
« Respuesta #6 en: Viernes 22 de Mayo de 2009, 23:08 »
0
En la suguiente web:

sites.google.com/site/proyectosroboticos/

encontrarás programas con ejemplos del Algoritmo de Bresenham para 2D, 3D... hasta 6D. Este algoritmo no sólo sirve para hacer líneas. En mi caso lo uso para coordinar los movimientos de un simulador de Brazo Robot de 5 grados de libertad (la mano no se cuenta como grado de libertad). Todo el brazo se mueve a la vez para la realización de cualquier trayectorias. En mis simuladores el brazo robor llega a dibujar. Para esta tarea uso los ficheros de extensión ".PLT" (HPGL).

Los ejemplos están escrito en FreeBasic y en este caso compatibles con QBasic. Las variables están declaras en tipo, así que es bien fácil traducirlo a cualquier lenguaje de programación.

Saludos.