亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? world.cpp

?? 機器人的行為控制模擬程序。用于機器人的環境識別。A robot action decision simulation used for robot enviroment recognition.
?? CPP
?? 第 1 頁 / 共 2 頁
字號:

    double x_size = 0.1;
    double y_size = 0.1;
    

    SelectObject(dc, (HBRUSH)world.blue_brush);

    int count = 500;

    while (m != NULL && count--) 
    {
        RECT r;
        
        get_bounding_rect(m->x,m->y,x_size, y_size, r);

        Ellipse(dc, r.left, r.top, r.right, r.bottom);
        

        m = m->next;

    }
}    
/* End of world_draw_markers */

    
/* Add impact to world */
void world_add_impact(double x, double y)
{
    impact_type *i = world.impacts;
 
    while (i != NULL) 
    {
        double dist = (x-i->x)*(x-i->x) + (y-i->y)*(y-i->y);
        
        if (dist < 0.01) return;
        
        i = i->next;

    }

    i = world.impacts;
    
    world.impacts = (impact_type *) malloc(sizeof(impact_type));

    world.impacts->x = x;
    world.impacts->y = y;
       
    world.impacts->next = i;
    
    world.num_impact++;
    
    world_compute_map_grid();
}
/* End of world_add_impact */


/* Free impact memory */
void world_free_impacts( void )
{
    impact_type *tmp;
        
    while (world.impacts != NULL) 
    {
        tmp = world.impacts->next;

        free(world.impacts);

        world.impacts = tmp; // Unlink
    }
    world.num_impact = 0;
}    
/* End of world_free_impacts */


/* Draw imapcts to DC */
void world_draw_impacts( HDC dc )
{
    impact_type *i = world.impacts;

return;
    double x_size = 0.2;
    double y_size = 0.2;
    

    SelectObject(dc, (HBRUSH)world.red_brush);
    SelectObject(dc, (HPEN)world.black_pen);
    

    while (i != NULL) 
    {
        RECT r;
        
        get_bounding_rect(i->x,i->y,x_size, y_size, r);

        Ellipse(dc, r.left, r.top, r.right, r.bottom);

        i = i->next;
    }
}    
/* End of world_draw_impacts */


/* Set target location */
void world_set_target(double x, double y)
{
    world.target_enabled = true;

    world.target_x = x;
    world.target_y = y;    
    
    world_compute_map_grid();
}
/* End of world_set_target */



/* Get direction to current waypoint */
void compute_waypoint_vector(double x, double y, point &v)
{
    v.x = 0;
    v.y = 0;

    if (world.num_waypoints == 0) return;
  
   double waypoint_x;
   double waypoint_y;
   
    // find current waypoint

    waypoint_type *w = world.waypoints;
    waypoint_type *waypoint = NULL;

    // Find current waypoint
    while (w != NULL)
    {
        if (w->num == world.cur_waypoint)
           waypoint = w;
        
         w = w->next;       
    }

    // Current waypoint not found
    if (waypoint == NULL)
    {
        write_console("waypoint not found\n");
        return;
    }

    v.x = x - waypoint->x;
    v.y = y - waypoint->y;    
}
/* End of compute_waypoint_vector */


/* Compute vector to closest impact */
void compute_impact_vector(double x, double y, point &v)
{
    v.x = 0;
    v.y = 0;
    
     if (world.num_impact == 0) return;
    
    impact_type *i = world.impacts;
   
    double closest_impact_x;
    double closest_impact_y;
   
    double closest_impact_dist = world.x_size * world.y_size;
   
   
    // Find closest impact 
    while (i != NULL) 
    {
        double x_diff = x - i->x;
        double y_diff = y - i->y;    
          
        double dist_squared = x_diff * x_diff + y_diff * y_diff;

        if (dist_squared < closest_impact_dist)
        {
            closest_impact_dist = dist_squared;
            closest_impact_x = i->x;
            closest_impact_y = i->y;            
        }
            
        i = i->next;        
     }


    v.x = x - closest_impact_x;
    v.y = y - closest_impact_y;        
}
/* End of compute_impact_vector */



/* Compute gradient at a point */
void compute_grad_point(double x, double y, double &dir, double &mag)
{
    double x_sum = 0, y_sum = 0;
    mag = 0;
    
    double dist;

    point v;

    // Compute vector to closest impact
    compute_impact_vector(x, y, v);
    
    dist = vect_mag(v.x, v.y);

    if (dist > 0)
    {
        double  force_x =  world.scale1 * v.x / pow(dist, 1.5);
        double  force_y =  world.scale1 * v.y / pow(dist, 1.5);

        x_sum += force_x;
        y_sum += force_y;

        mag += vect_mag(force_x, force_y);
    
    }
    
    
    compute_waypoint_vector(x, y, v);
    
    
    dist = vect_mag(v.x, v.y);
    
    if (dist > 0)
    {
        double force_x = world.scale2 * v.x;
        double force_y = world.scale2 * v.y;
        
       
        x_sum -= force_x;
        y_sum -= force_y;
    
        mag -= vect_mag(force_x, force_y);
    }
    

    
    compute_map_nav(v, x, y);

    dist = vect_mag(v.x, v.y);
    
    if (dist > 0)
    {
        double force_x = world.scale3 * v.x/dist;
        double force_y = world.scale3 * v.y/dist;
        
        x_sum += force_x;
        y_sum += force_y;
    
        mag += vect_mag(force_x, force_y);
    }
    








    dir = atan2(y_sum, x_sum);//+f_rand(-0.5, 0.5); 
}
/* End of compute_grad_point */



/* Draw gradient field */
void world_draw_grad(HDC dc)
{

 SelectObject(dc, world.green_pen);

    double x, y;
    
    int x_size = display_x /NUM_X_GRAD;
    int y_size = display_y /NUM_Y_GRAD;
    
    
    HBRUSH br;
    HPEN pen;
    
    for (int xg = 0; xg < NUM_X_GRAD; xg++)
        for (int yg = 0; yg < NUM_Y_GRAD; yg++)
        {
            x = xg / (double)NUM_X_GRAD * world.x_size;
            y = yg / (double)NUM_Y_GRAD * world.y_size;

            double dir, mag;

              compute_grad_point(x,y, dir, mag);


            double val = mag;
            
            if (val < -1) val = -1;
            if (val > 1) val = 1;
            
            int color = (int)(fabs(val) * 255);
            
            if (val < 0)
            {
                 br = CreateSolidBrush(RGB(color, 0, 0));
                pen = CreatePen(PS_SOLID, 1, RGB(color,0,0));                
            }
            else
            { 
                br = CreateSolidBrush(RGB(0, 0, color));
                pen = CreatePen(PS_SOLID, 1, RGB(0,0,color));
            }


             SelectObject(dc, br);
             SelectObject(dc, pen);

             Rectangle(dc, get_screen_x(x)-x_size/2-1,
                           get_screen_y(y)-y_size/2-1,
                           get_screen_x(x)+x_size/2+1,
                           get_screen_y(y)+y_size/2+1);

             DeleteObject(br);
             DeleteObject(pen);

             SelectObject(dc, world.green_pen);    

           // double mag =  fabs(world.grad_mag[yg][xg]) / 100.0;
            
            mag = fabs(mag / 5.0);

            if (mag > 0.1) mag = 0.1;

            
         //   mag = 0.05;

            draw_arrow(dc, x, y, dir, mag);
    }
}
/* End of void world_draw_grad(HDC dc) */


/* Load world file */
void world_load( void )
{
    OPENFILENAME ofname;

    char filename[300] = {0};
             
    char filter[] = "World files\0*.dat\0\0";
           
    memset(&ofname, 0, sizeof(ofname));
             
    ofname.lStructSize = sizeof(ofname);
    ofname.lpstrFilter = filter; 
    ofname.lpstrFile = filename; 
    ofname.nMaxFile = 300; 
    ofname.lpstrFileTitle = NULL; 
//    ofname.nMaxFileTitle = 300; 
    ofname.lpstrInitialDir = "."; 

    // Get filename from user
    if (!GetOpenFileName(&ofname))
        return;

    FILE *f = fopen(filename, "rt");

    unsigned int num_walls;


    world_setup();

    world_free_walls();

    fscanf(f, "%lf\n", &robot.x);
    fscanf(f, "%lf\n", &robot.y);
    fscanf(f, "%lf\n", &robot.dir);

    fscanf(f, "%d\n", &num_walls);
  
    for (int i = 0; i < num_walls && !feof(f); i++)
    {
        double x, y, x_size, y_size;
        
        fscanf(f, "%lf %lf %lf %lf\n", &x, &y, &x_size, &y_size);

        world_add_wall(x, y, x_size, y_size);
    }
}
/* End of world_load */


/* Save world data */
void world_save( void )
{
    OPENFILENAME ofname;
    char filename[300] = {0};
    char filter[] = "Map files\0*.dat\0\0";             
             
    memset(&ofname, 0, sizeof(ofname));
             
    ofname.lStructSize = sizeof(ofname);
    ofname.lpstrFilter = filter; 
    ofname.lpstrFile = filename; 
    ofname.nMaxFile = 300; 
    ofname.lpstrFileTitle = NULL; 
    ofname.lpstrInitialDir = "."; 

    // Get filename from user
    if (!GetSaveFileName(&ofname))
    {
        write_console("erer");
        return;
    }


    FILE *f = fopen(filename, "wt");
    

    fprintf(f, "%f\n", robot.x);
    fprintf(f, "%f\n", robot.y);
    fprintf(f, "%f\n", robot.dir);

    fprintf(f, "%d\n", world.num_walls);
    
    
    wall_type *w = world.walls;
    
    while(w != NULL)
    {
        fprintf(f, "%f %f %f %f\n", w->x, w->y, w->x_size, w->y_size);   
        
        w = w -> next;
    }
    
    fclose(f);
}
/* End of save world */




















?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区 二区 三区一级| 欧美高清dvd| 欧美日韩成人高清| 国产精品久久久久久久久免费樱桃| 亚洲国产日韩综合久久精品| 久久精品二区亚洲w码| 在线亚洲免费视频| 国产精品网曝门| 精品一区二区在线看| 日本高清不卡aⅴ免费网站| 久久久91精品国产一区二区精品 | 国产精品66部| 欧美日本在线视频| 一区二区三区在线观看国产| 丰满白嫩尤物一区二区| 精品国产乱码久久久久久1区2区 | 99精品桃花视频在线观看| 精品国产免费久久 | 亚洲va国产天堂va久久en| 成人黄色片在线观看| 久久先锋影音av鲁色资源| 日韩av一区二区在线影视| 欧美日韩视频在线一区二区| 亚洲欧美aⅴ...| 色综合天天狠狠| 国产精品久久久久影院| 不卡免费追剧大全电视剧网站| 久久影视一区二区| 黄色精品一二区| ww久久中文字幕| 国产成人午夜精品5599| 亚洲国产精品v| 成人97人人超碰人人99| 中文字幕中文字幕在线一区 | 天天影视涩香欲综合网| 在线观看av一区二区| 亚洲一区影音先锋| 欧美亚洲国产一区二区三区va| 亚洲一区二区在线免费观看视频 | 色偷偷久久人人79超碰人人澡 | 国产欧美一区二区精品仙草咪| 国内成+人亚洲+欧美+综合在线| 精品久久久久一区| 国产精品夜夜嗨| 国产精品第13页| 欧美午夜影院一区| 青青国产91久久久久久 | 成人免费视频在线观看| 97aⅴ精品视频一二三区| 亚洲主播在线播放| 91精品在线免费观看| 激情久久五月天| 国产精品久久久久一区二区三区共 | 美国十次综合导航| 日本一区二区三级电影在线观看| av网站一区二区三区| 一区二区三区免费在线观看| 欧美精品三级日韩久久| 麻豆精品一区二区三区| 国产免费成人在线视频| 欧美专区亚洲专区| 精品一区精品二区高清| 亚洲视频在线一区观看| 欧美片网站yy| 成人丝袜视频网| 亚洲二区在线视频| 中文字幕不卡在线| 欧美日韩和欧美的一区二区| 韩国v欧美v亚洲v日本v| 一区二区三区.www| 精品国产露脸精彩对白 | 久久众筹精品私拍模特| 色哟哟精品一区| 国产在线精品国自产拍免费| 亚洲精品国产精品乱码不99| 欧美v亚洲v综合ⅴ国产v| 一本到不卡免费一区二区| 久久国产生活片100| 亚洲一区二区在线免费看| 国产欧美视频在线观看| 欧美日韩一区不卡| 91在线视频在线| 国产精品自拍网站| 日本在线不卡视频一二三区| 亚洲欧洲成人自拍| wwwwxxxxx欧美| 欧美一区二区精品在线| 欧洲在线/亚洲| 99久久国产综合色|国产精品| 久久激情综合网| 日韩精品欧美精品| 亚洲综合999| 一区二区三区免费网站| 中文字幕在线观看不卡视频| 精品欧美久久久| 欧美一级片在线看| 欧美三级日韩在线| 一本大道久久a久久综合| 成人自拍视频在线观看| 国内精品久久久久影院色| 免费看日韩精品| 日韩精品视频网站| 首页国产欧美久久| 亚洲国产精品麻豆| 亚洲午夜私人影院| 亚洲高清在线视频| 一区二区三区在线播放| 一区二区三区.www| 亚洲一区二区三区视频在线| 亚洲一区二区影院| 亚洲图片欧美一区| 日韩精品国产欧美| 男人的天堂久久精品| 欧美bbbbb| 免费在线观看日韩欧美| 奇米影视7777精品一区二区| 日本欧美大码aⅴ在线播放| 日日欢夜夜爽一区| 蜜臀av一区二区在线观看| 日日夜夜精品视频免费| 麻豆成人免费电影| 国产在线视频一区二区三区| 国产精品自产自拍| av成人免费在线| 色综合久久综合| 777色狠狠一区二区三区| 7777精品伊人久久久大香线蕉 | 91亚洲永久精品| 欧美亚洲日本国产| 欧美一区二区免费| 国产日韩v精品一区二区| 中文字幕亚洲在| 亚洲一区在线免费观看| 蜜桃av一区二区| 色婷婷综合久久久久中文一区二区| 欧美三级日韩三级| 精品99一区二区| 亚洲美女精品一区| 秋霞午夜av一区二区三区| 国产很黄免费观看久久| 成人午夜伦理影院| 欧美老人xxxx18| 久久丝袜美腿综合| 一区二区在线观看视频在线观看| 五月婷婷综合网| 国产成人在线视频网址| 欧美性色黄大片| 国产日韩欧美精品综合| 亚洲一区二区欧美| 国产91露脸合集magnet| 欧美色涩在线第一页| 久久―日本道色综合久久| 亚洲免费观看在线观看| 久久国产人妖系列| 色呦呦国产精品| 26uuu成人网一区二区三区| 亚洲欧美国产77777| 紧缚奴在线一区二区三区| 色婷婷综合久久久中文字幕| 26uuu另类欧美亚洲曰本| 一区二区三区在线观看欧美| 国产一区日韩二区欧美三区| 91黄视频在线观看| 中文一区二区在线观看| 日韩va欧美va亚洲va久久| 色综合久久六月婷婷中文字幕| 26uuu国产电影一区二区| 亚洲国产欧美在线| www.在线成人| 久久色成人在线| 日韩电影在线一区二区| 色婷婷久久99综合精品jk白丝| 久久久久久久久一| 秋霞av亚洲一区二区三| 欧美视频在线一区二区三区 | 亚洲欧美福利一区二区| 国产成人精品1024| 精品国内二区三区| 性欧美疯狂xxxxbbbb| 99国产精品一区| 国产日产欧美一区二区三区| 美脚の诱脚舐め脚责91| 在线电影国产精品| 一区av在线播放| 97精品视频在线观看自产线路二| 久久精品视频免费观看| 奇米精品一区二区三区在线观看 | 91日韩在线专区| 国产欧美日韩三级| 国产精品一级片在线观看| 久久蜜桃香蕉精品一区二区三区| 免费在线观看一区| 日韩一区二区三区av| 日韩国产精品久久久久久亚洲| 欧美亚洲一区二区在线| 午夜免费久久看| 91超碰这里只有精品国产| 日韩中文字幕一区二区三区| 在线播放日韩导航| 奇米色一区二区|