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.
Programando cosillas
Moderador: na_th_an
Programando cosillas
Alcalde gilipollas
Re: Programando cosillas
No te pillo muy bien
Creo que sí, pero no sé. Voy a ver lo que recuerdo de trigonometría 
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
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:
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?


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

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?
Como diría Rorshach: "Urm..."
Re: Programando cosillas
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);
}
Como diría Rorshach: "Urm..."
Re: Programando cosillas
Yeah! eres una máquina!
Luego lo pruebo y te cuento a ver que tal

Luego lo pruebo y te cuento a ver que tal

Alcalde gilipollas
Re: Programando cosillas
A lo mejor no va, lo he hecho de memoria, pero tiene TO LA LÓGICA 

Como diría Rorshach: "Urm..."
Re: Programando cosillas
na_th_an escribió:A lo mejor no va, lo he hecho de memoria, pero tiene TO LA LÓGICA




Bueno, pruebo y te cuento a ver

Alcalde gilipollas
¿Quién está conectado?
Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados