首页 > 代码库 > 物理引擎接口
物理引擎接口
作者:朱凯 日期:2017年01月06日
1 结构分析
1.1 类定义
- 冰球类:class Puck
- 球桌类:class Table
- 击球器类:class Hockey_stick
1.2 关键函数
根据以上的类,以及如下需求:
输入:击球器的当前位置和速度(受机器人控制)。 输出:冰球的当前位置和速度。 可以得知关键函数是碰撞检测以及碰撞后的速度计算。其中难点是碰撞检测。
- void check_collision();//检查碰撞
- void update_position();//更新位置
- void update_velocity();//更新速度
2 接口设计
物理引擎是相对独立的一块,只需要向GUI和策略提供简单接口。
2.1 算法接口
- void PuckStep();//更新物理状态
2.2 数据接口
冰球:
- double radius;
- double position[AXIS_COUNT];
- double velocity[AXIS_COUNT];
- double mass; 与common中的参数对应,并且每次将参数传给common中的变量。
球桌:
- double length;
- double width;
- double goalline1;
- double goalline2;
球棍:
- double radius;
- double mass;
- double pre_position[AXIS_COUNT], cur_position[AXIS_COUNT];
-
double velocity[AXIS_COUNT]; 以上为类之中参数。
-
static double default_puck_radius = 0;
-
static double default_puck_mass = 0;
-
static double default_table_length = 0;
-
static double default_table_width = 0;
-
static double default_hockey_stick_radius = 0;
-
static double default_hockey_stick_mass = 0;
-
static double default_goal_length1 = 0;
- static double default_goal_length2 = 0; 以上参数为预设值,其它模块直接可采用。
物理引擎接口
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。