Estela anómala

14 views
Skip to first unread message

galil...@gmail.com

unread,
Apr 7, 2016, 3:12:38 PM4/7/16
to reda4
Pablo, tengo un problema. En este programa, la "bola saltarina" deja una estela indeseada. ¿Qué es lo que ocurre?

^r4/lib/gui.txt
^r4/lib/trace.txt

#accion

:pausa | n -- milisegundos de espera
  >r msec ( msec over - r <? )( drop ) rdrop 2drop ;

:rutina
  -600 ( 600 <=? )( dup
    360 /.
    dup sin 6 *
    5 *. 200 + swap
    120 *. 200 + swap
    accion exec
    1+ ) drop ;

:bola
  rojo 18 - 2dup 5 fcircle 10 pausa redraw amarillo 5 fcircle ;

:ruta
  5 fcircle ;

:animacion 'ruta 'accion ! rutina 'bola 'accion ! rutina ;

: $ffff00 paper negro clrscr animacion show 'exit >esc< ;



Pablo Hugo Reda

unread,
Apr 7, 2016, 3:34:20 PM4/7/16
to re...@googlegroups.com
Antialiasing

las rutinas graficas dibujan con antialiasing, lo que significa que promedia colores en el borde.
lo que ocurre en ​los pixeles del borde es, por ejemplo, dibuja 50% rojo 50% amarillo, cuando va a borrar hace 50% amarillo, 25% rojo, 25% amarillo (que era el anterior color), nunca vuelve a amarillo.

Animar borrando lo anterior no seria ideal aqui.
porque no borrar todo y dibujar cada vez?

galil...@gmail.com

unread,
Apr 8, 2016, 11:57:51 AM4/8/16
to reda4
Yabasic 2.763 no tiene doble buffering para la representación gráfica, así que no tengo costumbre de borrar todo y volver a repintar. He modificado el programa siguiendo tu sugerencia, pero ahora se ralentiza lo suficiente como para tener que quitar la pausa.

^r4/lib/gui.txt

:getxy | n -- n x y
  dup 360 /. dup sin 6 *
  5 *. 200 + swap
  120 *. 200 + swap ;

:ruta
  -600 ( 600 <=? )( getxy negro 5 fcircle 2 + ) drop ;

:bola
  -600 ( 600 <=? )( clrscr ruta getxy rojo 18 - 5 fcircle redraw 2 + ) drop ;

: $ffff00 paper clrscr bola show 'exit >esc< ;

Pablo Hugo Reda

unread,
Apr 8, 2016, 3:03:29 PM4/8/16
to re...@googlegroups.com
La idea cuando se hace animacion es dibujar dentro del show.
generalmente se mantiene en variables las coordenadas y se modifican en cada vuelta estos valores.


Reply all
Reply to author
Forward
0 new messages