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

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

?? world.cpp

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

    This program is free software; you can redistribute it and/or
    modify it under the terms of the GNU General Public License
    as published by the Free Software Foundation; either version 2
    of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.

    (C) 2006 Jason Hunt
    nulluser@gmail.gom 
*/

#include <windows.h>
#include <math.h>
#include <stdio.h>

#include "utility.h"
#include "graphics.h"
#include "main.h"
#include "console.h"
#include "robot.h"
#include "world.h"
#include "map.h"

world_type world;       // All world data 


/* Inital world setup */
void world_setup(void )
{   
    // Size in world space
    world.x_size = 10;
    world.y_size = 10;

    world_destroy(); // free any existing world

    // Create brushs
    world.white_brush = CreateSolidBrush(RGB(255, 255, 255));
    world.black_brush = CreateSolidBrush(RGB(0, 0, 0));
    world.green_brush = CreateSolidBrush(RGB(0, 255, 0));
    world.blue_brush = CreateSolidBrush(RGB(0, 0, 255));
    world.red_brush = CreateSolidBrush(RGB(255, 0, 0));
    world.color1_brush = CreateSolidBrush(RGB(0, 128, 200));
    

    // Create pens
    world.white_pen = CreatePen(PS_SOLID, 1, RGB(255, 255, 255));
    world.black_pen = CreatePen(PS_SOLID, 1, RGB(0, 0, 0));
    world.green_pen = CreatePen(PS_SOLID, 1, RGB(0, 255, 0));
    world.blue_pen = CreatePen(PS_SOLID, 1, RGB(0, 0, 255));
    world.color1_pen = CreatePen(PS_SOLID, 1, RGB(0, 128, 200));

    // Run time tweakable values
    world.scale1 = 0.11;
    world.scale2 = 0.86;
    world.scale3 = 0.193;
        
 
    // Start showing walls
    world.show_walls = true;
 

    // No walls
    world.walls = NULL;
    world.num_walls = 0;

    // No markers
    world.markers = NULL;

    // No Impacts
    world.impacts = NULL;

    // No waypoints
    world.waypoints = NULL;
    world.num_waypoints = 0;
    world.cur_waypoint = 0;

    // Do not draw grad grid
    world.draw_grad = false;
    
    
    world.target_enabled = true;
    world.target_x = world.x_size /2.0;
    world.target_y = world.y_size /2.0;
    
    
    // Setup surronding walls
    
    double wall_width = 0.05;
    
    // top
    world_add_wall(0, 0, world.x_size, wall_width);

    // Bottom
    world_add_wall(0, world.y_size-wall_width, world.x_size, wall_width);
    
    // Left
    world_add_wall(0, 0, wall_width, world.y_size);    
    
    // Right
    world_add_wall(world.x_size-wall_width, 0, wall_width, world.y_size);
    

    // Setup cross walls in center
   // world_add_wall(world.x_size/2 - world.x_size/4 , world.y_size/2-wall_width/2, world.x_size/2, wall_width);
   // world_add_wall(world.x_size/2-wall_width/2, world.y_size/2 - world.y_size/4 , wall_width, world.y_size/2);

    // Setup robot
    robot_init();


    // Compute first map interation
    world_compute_map_grid();
  
}
/* End of void world_setup(void ) */


/* Free all world data */
void world_destroy( void )
{
    world.num_walls = 0;
    
    world_free_walls();    
    world_free_markers();
    world_free_impacts();
    world_free_waypoints();
    
    DeleteObject(world.black_brush);
    DeleteObject(world.white_brush);
    DeleteObject(world.green_brush);
    DeleteObject(world.blue_brush);
    DeleteObject(world.red_brush);
    DeleteObject(world.color1_brush);
    
    DeleteObject(world.white_pen);
    DeleteObject(world.black_pen);
    DeleteObject(world.green_pen);
    DeleteObject(world.blue_pen);
    DeleteObject(world.color1_pen);
    
}
/* End of world_destroy */



/* Draw entire world */
void world_draw( HDC dc )
{

    SelectObject(dc, world.white_pen);
    SelectObject(dc, world.white_brush);
      
    // Clear entire area
    Rectangle(dc, 0, 0, display_x, display_y);


    if (world.draw_grad)
        world_draw_grad(dc);



//    if (world.draw_grad)
//         world_draw_map_grid(dc);


    SelectObject(dc, world.black_pen);
    SelectObject(dc, world.white_brush);

    world_draw_markers(dc);




    if (world.show_walls)
        world_draw_walls(dc);

    if (world.target_enabled)
    {
        double target_size = 0.15;

        SelectObject(dc, world.green_brush);        

        Ellipse(dc, get_screen_x(world.target_x - target_size/2), 
                    get_screen_y(world.target_y - target_size/2), 
                    get_screen_x(world.target_x + target_size/2), 
                    get_screen_y(world.target_y + target_size/2));
                
    }    


    world_draw_impacts(dc);    

    world_draw_waypoints(dc);

    robot_draw(dc);
    
}
/* End of world_draw */


/* Update all world data */
void world_update( void )
{
 //   world_compute_map_grid();

    robot_update();
}
/* End of world_update */


    
/* Transform from world space to screen space */
int get_screen_x( double x )
{
    return((int)(x / (double) world.x_size * display_x));
}
/* End of get_screen_x */


/* Transform from world space to screen space */
int get_screen_y( double y )
{
    return((int)(y / (double) world.y_size * display_y));
}
/* End of get_screen_y */


/* Return world cords of a screen pos */
double get_world_x( unsigned int x)
{
    return((x / (double)display_x) * world.x_size);        
}
/* End of get_world_x */

/* Return world cords of a screen pos */
double get_world_y( unsigned int y)
{
    return((y / (double)display_y) * world.y_size);        
}
/* End of get_world_x */


/* Return a bounting box in screen space for an object */
void get_bounding_rect(double x, double y, double x_size, double y_size, RECT &r)
{
    r.left = get_screen_x(x - x_size / 2);
    r.top = get_screen_y(y - y_size / 2);
    r.right = get_screen_x(x + x_size / 2);
    r.bottom = get_screen_y(y + y_size / 2);
}
/* End of get_bounding_rect */
    


/* Return true if points is inside of wall */    
bool world_check_wall_point( double x, double y )
{
    wall_type *w = world.walls;

    while (w != NULL) 
    {
        if (x >= w->x && x <= w->x + w->x_size && 
            y >= w->y && y <= w->y + w->y_size)
            return(1);

        w = w->next;

    }
    return(false);
}    
/* End of world_check_wall_point */


/* Add a wall to the world */
void world_add_wall(double x, double y, double x_size, double y_size)
{
    wall_type *w = world.walls;
    
    world.walls = (wall_type *) malloc(sizeof(wall_type));

    world.walls->x = x;
    world.walls->y = y;

    world.walls->x_size = x_size;
    world.walls->y_size = y_size;
       
    world.walls->next = w;
    
    world.num_walls++;
}
/* End of world_add_wall */



/* Free wall memory */
void world_free_walls( void )
{
    wall_type *tmp;
        
    while (world.walls != NULL) 
    {
        tmp = world.walls->next;

        free(world.walls);

        world.walls = tmp; // Unlink
    }

    world.num_walls = 0;
}    
/* End of world_free walls */


    
/* Draw walls to DC */
void world_draw_walls( HDC dc )
{
    wall_type *tmp = world.walls;

    SelectObject(dc, (HBRUSH)world.color1_brush);
    SelectObject(dc, (HPEN)world.color1_pen);

    while (tmp != NULL) 
    {
        RECT r;
        
        Rectangle(dc, get_screen_x(tmp->x),
                      get_screen_y(tmp->y),
                      get_screen_x(tmp->x + tmp->x_size),
                      get_screen_y(tmp->y + tmp->y_size));

        tmp = tmp->next;
    }
}    
/* End of world_draw_walls */



/* Add waypoint to nav system */
void world_add_waypoint(double x, double y, double dir)
{
    waypoint_type *w = world.waypoints;
    
    world.waypoints = (waypoint_type *) malloc(sizeof(waypoint_type));

    world.waypoints->x = x;
    world.waypoints->y = y;
    world.waypoints->dir = dir;
      
    world.waypoints->next = w;
    
    world.num_waypoints++;
}
/* End of world_add_waypoint */


/* Free waypoint memory */
void world_free_waypoints( void )
{
    waypoint_type *tmp;
        
    while (world.waypoints != NULL) 
    {
        tmp = world.waypoints->next;

        free(world.waypoints);

        world.waypoints = tmp; // Unlink
    }
    world.num_waypoints = 0;
}    
/* End of world_free_waypoints */


/* Draw nav waypoints to DC */
void world_draw_waypoints( HDC dc )
{
    waypoint_type *tmp = world.waypoints;

    SelectObject(dc, (HBRUSH)world.color1_brush);
    SelectObject(dc, (HPEN)world.color1_pen);

    while (tmp != NULL) 
    {
        RECT r;

        if (tmp->num == world.cur_waypoint)
        {
           SelectObject(dc, (HBRUSH)world.red_brush);
           SelectObject(dc, (HPEN)world.black_pen);
            
            
        }else
        {
           SelectObject(dc, (HBRUSH)world.color1_brush);
           SelectObject(dc, (HPEN)world.color1_pen);
        }
        
        Ellipse(dc, get_screen_x(tmp->x - 0.05),
                      get_screen_y(tmp->y - 0.05),
                      get_screen_x(tmp->x  + 0.05),
                      get_screen_y(tmp->y  + 0.05));

        tmp = tmp->next;

    }
}
/* End of draw waypoints */

    

/* Add marker to the world */
void world_add_marker(double x, double y)
{
    return;
    marker_type *m = world.markers;
    
    world.markers = (marker_type *) malloc(sizeof(marker_type));

    world.markers->x = x;
    world.markers->y = y;
       
    world.markers->next = m;
}
/* End of world_add_marker */



/* Free marker memory */
void world_free_markers( void )
{
    marker_type *tmp;
        
    while (world.markers != NULL) 
    {
        tmp = world.markers->next;


        free(world.markers);

        world.markers = tmp; // Unlink
    }
}    
/* End of world free markers */


/* draw markers to DC */
void world_draw_markers( HDC dc )
{
    marker_type *m = world.markers;

return;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久综合久色欧美综合狠狠| 亚洲欧美激情插 | av在线免费不卡| 色视频欧美一区二区三区| 日韩欧美二区三区| 亚洲韩国精品一区| 成人av资源网站| 日韩精品一区二区三区蜜臀 | av中文一区二区三区| 日韩一二三区不卡| 亚洲影视在线观看| 99国产精品国产精品毛片| 久久综合久色欧美综合狠狠| 日韩影院精彩在线| 一本大道综合伊人精品热热| 国产欧美精品日韩区二区麻豆天美| 亚洲成人av在线电影| 色婷婷国产精品久久包臀| 国产免费观看久久| 国产精品一区二区无线| 精品精品国产高清a毛片牛牛| 日日摸夜夜添夜夜添国产精品| 色偷偷久久人人79超碰人人澡| 国产精品网站导航| 岛国av在线一区| 国产欧美一区二区精品性色超碰| 国产一区在线视频| 亚洲国产色一区| 色94色欧美sute亚洲线路二| 国产精品私人影院| 成人福利电影精品一区二区在线观看 | 国产在线视视频有精品| 日韩精品一区二区三区在线观看| 五月婷婷欧美视频| 91精品国产一区二区三区香蕉| 亚洲高清在线视频| 欧美一区二区视频网站| 麻豆精品视频在线| 精品成人私密视频| 国产高清成人在线| 成人免费在线观看入口| 91香蕉视频mp4| 一区二区三区美女| 欧美精品 国产精品| 蜜桃视频免费观看一区| 国产亚洲欧美中文| 92精品国产成人观看免费| 亚洲一区二区三区四区在线| 69堂亚洲精品首页| 精品在线播放午夜| 精品成人a区在线观看| 国产成人在线看| 亚洲欧美自拍偷拍色图| 欧美亚洲禁片免费| 国内成+人亚洲+欧美+综合在线| 国产亲近乱来精品视频| 91一区二区三区在线观看| 亚洲一区二区四区蜜桃| 日韩美女主播在线视频一区二区三区 | 蜜臀精品一区二区三区在线观看 | 欧美一区二区女人| 国产精品自产自拍| 一区二区在线观看免费视频播放| 欧美日韩成人综合天天影院 | 丝袜a∨在线一区二区三区不卡| 日韩免费高清av| 99久久er热在这里只有精品66| 婷婷国产v国产偷v亚洲高清| 久久久精品日韩欧美| 欧美伊人精品成人久久综合97| 蜜桃视频在线观看一区二区| 成人免费小视频| 精品女同一区二区| 在线精品国精品国产尤物884a| 老汉av免费一区二区三区| 亚洲免费资源在线播放| 精品国产一区二区亚洲人成毛片| 95精品视频在线| 国产一区二区三区精品视频| 亚洲欧美另类小说| 久久影音资源网| 欧美另类videos死尸| 大尺度一区二区| 精品影视av免费| 亚洲国产成人高清精品| 国产精品嫩草影院com| 日韩一区国产二区欧美三区| av在线播放成人| 国产麻豆午夜三级精品| 日本特黄久久久高潮| 亚洲精品高清在线观看| 中文字幕精品一区| 337p粉嫩大胆噜噜噜噜噜91av| 欧美日韩日日骚| 色婷婷激情综合| 99免费精品在线| 国产精品18久久久久久久久久久久 | 成人精品视频一区二区三区尤物| 日韩高清国产一区在线| 一区二区三区中文字幕在线观看| 国产精品私房写真福利视频| 久久久久久久久久久黄色| 欧美一区二区国产| 欧美精品乱人伦久久久久久| 色哟哟亚洲精品| 色综合久久综合网97色综合| 成人动漫一区二区在线| 粉嫩嫩av羞羞动漫久久久 | 国内精品久久久久影院薰衣草 | 99精品国产一区二区三区不卡| 国产精品一二三区在线| 国产一区二区美女| 国产呦精品一区二区三区网站| 久久99这里只有精品| 免费成人av在线| 日韩成人av影视| 久久精品国产秦先生| 久国产精品韩国三级视频| 另类小说色综合网站| 免费观看成人av| 国产尤物一区二区| av在线播放一区二区三区| 99久久精品国产一区二区三区 | 成人黄色片在线观看| 成人高清在线视频| 91极品视觉盛宴| 欧美日韩中文精品| 欧美一级片在线| 久久久午夜精品理论片中文字幕| 久久久亚洲精华液精华液精华液| 国产欧美精品一区二区色综合 | 国产乱妇无码大片在线观看| 国产99久久久国产精品潘金网站| 99久久免费精品| 欧美日韩国产综合草草| 欧美一区二区三区四区在线观看| 欧美va在线播放| 国产精品久久一卡二卡| 一区二区三区在线影院| 日韩精品欧美成人高清一区二区| 裸体一区二区三区| 成人高清免费观看| 91精品欧美一区二区三区综合在| 精品少妇一区二区三区日产乱码| 中文字幕av一区二区三区免费看| 亚洲一卡二卡三卡四卡无卡久久| 蜜臀av亚洲一区中文字幕| 国产成人午夜精品影院观看视频| 色老头久久综合| 日韩美女视频在线| 亚洲少妇30p| 日本亚洲天堂网| www.久久精品| 欧美电视剧免费全集观看| 国产精品视频yy9299一区| 午夜国产精品一区| 国产·精品毛片| 欧美一区二区成人| 亚洲手机成人高清视频| 精品一区二区在线播放| 欧洲在线/亚洲| 国产欧美精品一区二区色综合 | 久久疯狂做爰流白浆xx| 99精品桃花视频在线观看| 日韩欧美综合在线| 亚洲自拍偷拍网站| 不卡视频免费播放| 久久综合九色综合欧美亚洲| 亚洲夂夂婷婷色拍ww47| 成人黄色在线网站| 久久久亚洲国产美女国产盗摄| 视频一区二区国产| 色八戒一区二区三区| 国产精品你懂的在线欣赏| 国产揄拍国内精品对白| 日韩欧美色综合| 五月婷婷综合网| 欧美三级日韩在线| 亚洲欧美一区二区久久 | 日韩视频在线观看一区二区| 一区二区三区在线免费播放 | 伊人性伊人情综合网| 成人精品gif动图一区| 久久久国产综合精品女国产盗摄| 首页综合国产亚洲丝袜| 欧美在线视频全部完| 国产精品另类一区| 国产精品白丝jk黑袜喷水| 欧美成人福利视频| 毛片av中文字幕一区二区| 欧美伊人久久大香线蕉综合69| 亚洲免费伊人电影| 97se狠狠狠综合亚洲狠狠| 中文字幕在线观看一区二区| 国产v综合v亚洲欧| 欧美极品少妇xxxxⅹ高跟鞋 | 一区二区三区日韩精品| 91免费视频大全| 亚洲欧美中日韩| 欧美亚洲国产一区二区三区va|