/*----------------------------------------------------------------------------*/ void refresh_affichage() { RefreshSDL(); }
//------------------------------------------------------------------------------ void SDL_Draw_Robot() { vector_t N,T,u,v; point_t point[4]; position_t pos,dest; while(true) { Draw_SDL_Background(); // Draw pos = cine_get_position(); dest = pp_get_dest(); // Robot supposé N.x=cos(pos.a); N.y=sin(pos.a); T.x=-sin(pos.a); T.y=cos(pos.a); v=vector_t(_ROUE_X,0.).rotate(pos.a); point[0].x=((int)((pos.x+N.x*_LONGUEUR_ROBOT/2.+T.x*_LARGEUR_ROBOT/2.-v.x)*_SCALE_SDL)); point[0].y=((int)((pos.y+N.y*_LONGUEUR_ROBOT/2.+T.y*_LARGEUR_ROBOT/2.-v.y)*_SCALE_SDL)); point[1].x=((int)((pos.x+N.x*_LONGUEUR_ROBOT/2.-T.x*_LARGEUR_ROBOT/2.-v.x)*_SCALE_SDL)); point[1].y=((int)((pos.y+N.y*_LONGUEUR_ROBOT/2.-T.y*_LARGEUR_ROBOT/2.-v.y)*_SCALE_SDL)); point[2].x=((int)((pos.x-N.x*_LONGUEUR_ROBOT/2.-T.x*_LARGEUR_ROBOT/2.-v.x)*_SCALE_SDL)); point[2].y=((int)((pos.y-N.y*_LONGUEUR_ROBOT/2.-T.y*_LARGEUR_ROBOT/2.-v.y)*_SCALE_SDL)); point[3].x=((int)((pos.x-N.x*_LONGUEUR_ROBOT/2.+T.x*_LARGEUR_ROBOT/2.-v.x)*_SCALE_SDL)); point[3].y=((int)((pos.y-N.y*_LONGUEUR_ROBOT/2.+T.y*_LARGEUR_ROBOT/2.-v.y)*_SCALE_SDL)); PolylineSDL(point, 4, getColorSDL(clWhite)); LigneSDL(point[2].x, point[2].y, ((int)(pos.x*_SCALE_SDL)), ((int)(pos.y*_SCALE_SDL)), getColorSDL(clWhite)); LigneSDL(point[3].x, point[3].y, ((int)(pos.x*_SCALE_SDL)), ((int)(pos.y*_SCALE_SDL)), getColorSDL(clWhite)); // Destination N.x=cos(dest.a); N.y=sin(dest.a); T.x=-sin(dest.a)*0.03; T.y=cos(dest.a)*0.03; LigneSDL(((int)(_SCALE_SDL*dest.x)), ((int)(_SCALE_SDL*dest.y)), ((int)(_SCALE_SDL*(dest.x+N.x*0.1))), ((int)(_SCALE_SDL*(dest.y+N.y*0.1))), getColorSDL(clBlack)); LigneSDL(((int)(_SCALE_SDL*(dest.x+N.x*0.1))), ((int)(_SCALE_SDL*(dest.y+N.y*0.1))), ((int)(_SCALE_SDL*(dest.x+N.x*0.07+T.x))), ((int)(_SCALE_SDL*(dest.y+N.y*0.07+T.y))), getColorSDL(clBlack)); LigneSDL(((int)(_SCALE_SDL*(dest.x+N.x*0.1))), ((int)(_SCALE_SDL*(dest.y+N.y*0.1))), ((int)(_SCALE_SDL*(dest.x+N.x*0.07-T.x))), ((int)(_SCALE_SDL*(dest.y+N.y*0.07-T.y))), getColorSDL(clBlack)); // Captors for(int i=0;i<4;i++) { vector_t pos = captor_get_position(i); Uint32 color; switch(captor_get_status(i)) { case 0: color = getColorSDL(clBlack); break; case 1: color = SDL_MapRGB(affichage->format, 255, 0, 180); break; case 2: color = SDL_MapRGB(affichage->format, 255, 0, 0); break; case 3: color = SDL_MapRGB(affichage->format, 60, 60, 60); break; } DisqueSDL(((int)(_SCALE_SDL*pos.x)), ((int)(_SCALE_SDL*pos.y)), ((int)(_SCALE_SDL*0.01)),color); } RefreshSDL(); usleep(40000); } }