
Iniciado por
BuD
Miq, (Miq es de Miquel?

) dios, como lo haces para cambiar el sistema en un solo dia, xD. Y otra cosa, como hacias para dibujar objetos primarios como el circulo?
No. Miq de Miqardo...
Sí, de Miquel.
Lo de cambiar el sistema en un solo día, pues supongo que es cuestión de tener el código un poco organizado. El algoritmo que decidía el radio de la circunferencia que se iba acercando hasta estar en el sitio adecuado en el momento adecuado es exactamente el mismo que decide ahora dónde pintar los indicadores. Lo que cambia es lo que pinto y dónde lo pinto.
Respecto a la circunferencia, primero pensé en utilizar SDL_gfx, pero no encontré la librería compilada, la intenté compilar yo, y como era de esperar me quedé en el intento. Además, total, para usar sólo una función... Al final decidí hacerlo yo mismo, busqué por Internet, y encontré el algoritmo de Bresenham. Si has estudiado algo de gráficos por computador es probable que te suene (el famoso, o al menos el que me explicaron en la universidad, es el de pintar una línea). Si quieres échale un vistazo al código fuente de la primera versión. Y sino, te lo pego aquí mismo, que tampoco es tan largo:
Código:
void Song::DrawCircle(Uint16 cx, Uint16 cy, Uint8 radius, Uint32 colour)
{
Sint16 x, y;
x=0;
y=radius;
Sint16 p=1-radius;
while (x<y)
{
if (p<0)
{
x++;
p=p+2*x+1;
}
else
{
x++;
y--;
p=p+2*(x-y)+1;
}
DrawPixel(cx+x, cy+y, colour);
DrawPixel(cx+x, cy-y, colour);
DrawPixel(cx-x, cy+y, colour);
DrawPixel(cx-x, cy-y, colour);
DrawPixel(cx+y, cy+x, colour);
DrawPixel(cx+y, cy-x, colour);
DrawPixel(cx-y, cy+x, colour);
DrawPixel(cx-y, cy-x, colour);
}
}
Marcadores