zoukankan      html  css  js  c++  java
  • 物理引擎接口

    作者:朱凯 日期: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; 以上参数为预设值,其它模块直接可采用。
  • 相关阅读:
    字符串与数组的相互转换
    临时笔记-react实战
    临时笔记-react-router
    vuejs上传图片| table的data更新了,但插槽的数据不能及时更新
    Intellij IDEA软件使用教程
    Git软件使用教程
    阿里程序员常用的 15 款开发工具
    Office后缀含义
    Project软件使用教程
    PowerDesigner软件使用教程
  • 原文地址:https://www.cnblogs.com/zhukkkk/p/6257076.html
Copyright © 2011-2022 走看看