Página 1 de 2

Programando cosillas

Publicado: Mar, 08 Oct 2013, 13:37
por juanfran
Buenas, tengo una duda, quiero pintar una función senoidal para algo parecido a un rayo. He estado probando pero me salen churros muy gordos.

Tengo mi tile que es de 64x64, como quiero que el rayo vaya por medio de este fijo que el pixel X=0 ,Y=32 de ese tile es el "centro" (por asi llamarlo). La altura máxima que puede llegar a tomar es 32 pixeles tanto por arriba como por abajo a ese centro.

Pruebo de la siguiente forma:

y = sin (i / 180 * PI) (180*PI para convertirlo en radianes)

i contiene el angulo, que seria un bucle que va desde 0 a 360.

Lo que no se me ocurre es la forma de ponerlo para que la longitud de onda me ocupe completamente un tile, ni como obtener la posicion X.

Re: Programando cosillas

Publicado: Mar, 08 Oct 2013, 13:43
por nacho
Pos no sé, yo soy de letras :lol:

Re: Programando cosillas

Publicado: Mar, 08 Oct 2013, 13:49
por juanfran
nacho escribió:Pos no sé, yo soy de letras :lol:


:lol: :lol: :lol: :lol: :lol:

Re: Programando cosillas

Publicado: Mar, 08 Oct 2013, 13:50
por na_th_an
No te pillo muy bien :D Creo que sí, pero no sé. Voy a ver lo que recuerdo de trigonometría :D

Vamos a pintar la onda de izquierda a derecha ~~~~.

Tú mira esta fórmula:

Y = 32 + A * sin (ALPHA)

Donde A es la amplitud, o sea, el valor máximo y mínimo. Si tu tíle es de 64 y empiezas en 32, y quieres que llegue arriba y abajo, A = 32, porque así, 32-32=0 y 32+32=64. Pon 31 y así no se sale, mejor :lol:

Luego ALPHA es el ángulo. Lo suyo es recorrer el tile de un extremo a otro con un bucle, y calcular el ángulo escalando.

Por ejemplo, tú tendrías que hacer el bucle desde X = 0 hasta 63. Ahora tienes que ver cuántas vueltas quieres que te entren ahí. Una entera es 2*PI, se hace una regla de 3:

Código: Seleccionar todo

32 -> 2*PI
i -> ALPHA


Por lo que ALPHA = 2*PI*i / 32.

Si quieres dos vueltas, pues 4*PI. Si quieres media vuelta, pues PI. Y así.

¿Es esto lo que quieres?

Re: Programando cosillas

Publicado: Mar, 08 Oct 2013, 13:55
por na_th_an
Creo que algo asín:

Código: Seleccionar todo

int x, y; float alpha;

for (x = 0; x < 64; x ++) {
   alpha = 2 * PI * (float) (x) / 32;
   y = 32 + 31 * sin (alpha);
   pon_un_picsel_en (x, y);
}

Re: Programando cosillas

Publicado: Mar, 08 Oct 2013, 13:55
por juanfran
Yeah! eres una máquina! ;)

Luego lo pruebo y te cuento a ver que tal :D

Re: Programando cosillas

Publicado: Mar, 08 Oct 2013, 13:56
por na_th_an
A lo mejor no va, lo he hecho de memoria, pero tiene TO LA LÓGICA :lol:

Re: Programando cosillas

Publicado: Mar, 08 Oct 2013, 13:58
por juanfran
na_th_an escribió:A lo mejor no va, lo he hecho de memoria, pero tiene TO LA LÓGICA :lol:


:lol: :lol: :lol: :lol:

Bueno, pruebo y te cuento a ver ;)

Re: Programando cosillas

Publicado: Mar, 08 Oct 2013, 14:02
por na_th_an
DALE TRON!

Re: Programando cosillas

Publicado: Mar, 08 Oct 2013, 14:04
por juanfran
;)

A ver que sale de esto!