码迷,mamicode.com
首页 > 其他好文 > 详细

物理引擎接口

时间:2017-01-06 21:32:01      阅读:256      评论:0      收藏:0      [点我收藏+]

标签:数据接口   efault   ref   lob   位置   碰撞检测   物理   user   pre   

作者:朱凯 日期: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; 以上参数为预设值,其它模块直接可采用。

物理引擎接口

标签:数据接口   efault   ref   lob   位置   碰撞检测   物理   user   pre   

原文地址:http://www.cnblogs.com/zhukkkk/p/6257076.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!