zoukankan      html  css  js  c++  java
  • 第四周作业(更新)

    一、博客作业(对冰球桌环境仿真模块的思路)

    前言:一开始看到这个作业我是完全没有思路的,直至我打开了我的IPHONE手机,发现苹果虚设的HOME键-Assistive Touch,它能随我的手指移动而移动,于是我将其与冰球桌的击球器联系在一起。

    ①击球器的控制

    由前言可知,实现一个击球器的控制,需要先能实现一个圆(击球器)能随手指移动,这一软件模块主要技术点在于View的应用、触摸事件处理等

    ②位置的控制

    由于是二维的环境,可在边界交点处设立一个原点,那么击球器和冰球的位置皆可用F(x,y)来确定,即设计一个变量记录击球器和冰球的位置。设计一个函数能实时输出击球器和冰球的坐标位置和速度矢量

    ③击球过程

    由于有俩个变量实时记录着击球器和冰球的位置情况,在未设定好击球器的半径和冰球的半径下,当俩个变量相等时,设定一个Impact=ture,触发击球器和冰球有一个“碰撞”的效果(即碰撞函数),“碰撞”后才能使得冰球产生一个速度矢量。根据现实中两球相碰的物理情况,冰球总是会沿直线运动,因此为了实现这一个过程,需要用一个主函数来显示冰球,速度的确定,可以用动量守恒定律,在每次碰撞的瞬间,应使得击球器在一瞬间静止,将冰球的速度(标量)完全返回给冰球,且方向相反,使得冰球沿一个直线轨迹运动。

    ④轨迹函数

    规划冰球碰撞后的轨迹函数,用插补来实现

    ⑤约束

    在边界处也设定一个IMPACT,当IPMACT=TURE时,触发冰球函数的碰撞函数

    二、编程作业

    #ifndef BALL
    #define BALL
    struct BALL_parameter{                          //冰球的运动参数
    
     double Position_BALL;                          //位置
    
         double Velocity_BALL;                      //速度
    
     };
    
    struct BALL_state{                              //冰球的状态
    
     bool Request;                                  //是否接受指指令
    
         bool Done;                                 //是否已完成运动指令
    
         bool Impact;                               //是否接受碰撞的指令
    
         };
    
    struct impact{                                  //碰撞指令
    
         double Position;
    
         double Velocity
    
    };
    
    class BALL
    
    {
    
     public:
    
        BALL_state State;                                     //定义数据成员冰球的状态
    
        BALL_parameter Parameter;                             //定义数据成员冰球运动参数
    
        impact Impact;                                        //定义数据成员碰撞指令
    
        void SET_BALL(BALL_state, BALL_parameter, impact);    //冰球初始化函数
    
        int path_line();                                      //冰球的运动轨迹
    
        int Imapct_Line();                                    //冰球碰撞的运动轨迹
    
        BALL_state Get_state();                               //返回冰球对象的状态
    
        BALL_parameter Get_parameter();                       //返回冰球对象的参数
    
        impact Get_impact();                                  //返回冰球对象的接受命令参数
    
        void take_order();                                    //执行命令,并及时更新冰球状态
    
    };
    

    已在GITHUB提交--GITHUB

  • 相关阅读:
    矩阵的应用
    PyTorch工具
    python不同开根号速度对比
    GloVe损失函数的理解
    课程回顾-Convolutional Neural Networks
    课程回顾-Structuring Machine Learning Projects
    课程回顾-Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization
    课程回顾-Neural Network & Deep Learning
    使用GOOGLE COLAB训练深度学习模型
    如何使用Keras的Model visualization功能
  • 原文地址:https://www.cnblogs.com/ouxiaohui/p/6228775.html
Copyright © 2011-2022 走看看