• 物理引擎接口


    作者:朱凯 日期: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; 以上参数为预设值,其它模块直接可采用。
  • 相关阅读:
    Gradle
    ES6总结
    VSCode 开发Vue + ElementUI
    WEUIHalfscreen Dialog和mescroll冲突
    Raspberry Pi安装AdGuard Home
    浏览器跨域请求 原理和个人理解
    如何保证缓存与数据库双写时的数据一致性?
    关于软件系统中的高可用问题的碎碎念
    Android项目实战(六十三):as3.6+的一些警告解决方法
    引入官方uni.css样式
  • 原文地址:https://www.cnblogs.com/zhukkkk/p/6257076.html
Copyright © 2020-2023  润新知