《实时控制软件设计》第二次编程练习

//Point.h 1 #ifndef Point_h
 2 #define Point_h
 3 class Point
 4 {
 5     private :
 6         double px,py;
 7     public :
 8
 9         double getpx()
10         {
11             return px;
12         }
13         double getpy()
14         {
15             return py;
16         }
17         void setp(double x, double y)
18         {
19             px=x;
20             py=y;
21         }
22 };
23 #endif
 //Solver.h 1 #ifndef Solver_h
 2 #define Solver_h
 3 #include <math.h>
 4 #include <iostream>
 5 #include"Point.h"
 6 using namespace std;
 7 class Solver
 8 {
 9     private:
10         double ang1,ang2;
11         Point  p;
12     public:
13
14         void setp(Point p1)
15         {
16             p=p1;
17         }
18         void setang(double a1, double a2)
19         {
20             ang1=a1/180*3.1415926;
21             ang2=a2/180*3.1416926;
22         }
23         void outang ()
24         {
25             cout<<"第一机械臂的转角是"<<ang1/3.1415926*180<<endl;
26             cout<<"第二机械臂的转角是"<<ang2/3.1415926*180<<endl;
27         }
28         void outxy ()
29         {
30             cout<<"x坐标是"<<p.getpx()<<endl;
31             cout<<"y坐标是"<<p.getpy()<<endl;
32         }
33         void angtdik()
34         {
35             p.setp(100*cos(ang1)+100*cos(ang2),100*sin(ang1)+100*sin(ang2));
36
37         }
38         void diktang()
39         {
40             double sx=p.getpx();
41             double sy=p.getpy();
42             double q=atan(sy/sx);
43             double l=sqrt(sx*sx+sy*sy);
44             ang1=q+acos(-l/200);
45             ang2=acos((l*l-20000)/20000)-3.1415926-ang1;
46         }
47 };
48 #endif
//Robot.h#ifndef Robot_h
#define Robot_h
#include "Coord.h"
#include "Trans.h"
#include "Solver.h"
class Robot
{
    private:
        double l1,l2,rang1,rang2;
    public:
        Robot()
        {
            l1=100;
            l2=100;
            rang1=0;
            rang2=0;
        }
        void PTPmove(Coord c1,Point p)
        {
            Trans T;
            Solver S;
            Point p1;
            p1=T.TTW (c1,p);
            S.setp(p1);
            S.diktang();
            S.outang();

        }
};
#endif
//Coord.h#ifndef Coord_h
#define Coord_h
#include "Point.h"
class Coord
{
    private :
        Point p1;
        double ang;
    public :
        /*Coord(Point p,double ang1)
        {
            p1=p;
            ang=ang1;
        }*/
        void setcoord(Point p,double ang1 )
        {
            p1=p;
            ang=ang1;
        }
        Point getp1()
        {
            return p1;
        }
        double getang()
        {
            return ang/180*3.1415926;
        }
};
#endif
//Trans.h#ifndef Trans_h#define Trans_h#include "Point.h"#include "Coord.h"#include <math.h>class Trans{    public :

        Point TTW (Coord c1,Point p3)        {            Point p1=c1.getp1();            Point p2;            double ang=c1.getang();            double x,y,x1,y1;            x=p3.getpx();            y=p3.getpy();            x1=x*cos(ang)-y*sin(ang)+p1.getpx();            y1=x*sin(ang)+y*cos(ang)+p1.getpy();            p2.setp(x1,y1);            return p2;                    }    

};#endif
//main.cpp#include <iostream>
#include "Point.h"
#include "Solver.h"
#include "Robot.h"
#include "Coord.h"
#include "Trans.h"
using namespace std;
int  main ()
{
    Robot r;
    Point p;
    Point p1;
    p.setp(30,20);
    p1.setp(40,60);
    Coord t;
    t.setcoord(p,45);
    r.PTPmove(t,p1);
    return 0;
}

运行结果:

时间: 2024-10-13 22:59:54

《实时控制软件设计》第二次编程练习的相关文章

实时控制软件设计第二次编程作业

1 #include <iostream> 2 #include"robot.h" 3 /* run this program using the console pauser or add your own getch, system("pause") or input loop */ 4 5 int main(int argc, char** argv) { 6 Robot Robot(140,200,6,4); 7 jointframe JF; 8

实时控制软件设计第二周作业

一.汽车出入门禁系统状态机设计 状态机所有状态: 入闸传感器(两种状态): Ture  False  (分别用ET和EF表示) 出闸传感器(两种状态): Ture  False  (分别用OT和OF表示) 起落杆(两种状态):     UP DOWN   (分别用UP和DW表示) 通行灯(两种状态):       Red Green   (分别用R和G表示) 状态机所接收到的外部事件: 汽车进入和驶离门禁系统区: Enter  Out (分别用E和O表示) 状态机所产生的动作: 起落杆的动作: 

实时控制软件设计第二周作业-停车场门禁控制系统状态机

画出动作转换图为: 使用模块化设计,将起落杆.出入传感器和通行灯设计成四个模块,分别继承设计好的系统模块接口: 1 //FSM_Interface.h 2 #pragma once 3 4 namespace FSM 5 { 6 7 class ISystemUnit //系统单元接口 8 { 9 public: 10 11 virtual void Initialize() = 0; //初始化 12 13 virtual void Execute() = 0; //执行动作 14 15 vi

实时控制软件设计第二次作业

1-1.Point.h #ifndef MY_POINT #define MY_POINT class Point{ private: double _x; double _y; public: Point(double x,double y); double getX(); double getY(); }; #endif  1-2.Point.cpp #include"Point.h" #include<iostream> Point::Point(double x,d

《实时控制软件设计》第一次编程作业

//代码: #include <iostream> #include <Eigen/Dense> #include <cmath> using Eigen::MatrixXd; using namespace std; float pi=3.1415926; void mpoint(MatrixXd m) { MatrixXd T(1,2),A(1,2); cout<<"请输入移动距离:"; fflush(stdin); scanf(&q

《实时控制软件设计》读书笔记

读书笔记 在浅读过<构建之法:现代软件工程>第一章和邹欣老师的一些博文后,我对以下四个方面有了一些粗陋的认识. 一.      对软件工程的理解 <构建之法>第一章中对软件工程有着自己的理解.书中提到“软件=程序+软件工程”这一概念.同时,书中还指出软件工程包含软件需求分析.软件设计.软件构建.软件测试和软件维护这些领域.看过这些介绍后,我认为首先要弄请程序.软件.软件工程的区别.正如书中提到阿超的例子一样,程序只是完成某一项或几项简单任务的代码和数据结构集成:而软件则是能满足用户

《实时控制软件设计》第二个编程作业

1 #include <iostream> 2 #include<Eigen/Dense> 3 #include<cmath> 4 #define PI 3.1415926 5 /* run this program using the console pauser or add your own getch, system("pause") or input loop */ 6 using namespace std; 7 using namesp

《实时控制软件设计》第一个编程作业

题目: 第一步: 写一个根据输入坐标生成一个平面图形(点.线段和三角形)并能对该几何图形进行平移和旋转操作的命令行 “软件”,要求: a) 通过命令行输入图形的名称,端点数(1为点,2为线段,3为三角形)和端点坐标(x,y). 如:输入一个点 p1 1 (2,5) 输入一个线段 l1 2 (3,5) (4,6) 输入一个三角形 t1 3 (1,1) (2,5) (-4,7) b) 输入一个计算指令,实现对上述图形的平移和绕原点旋转等操作,并输出该图形新的坐标值. 如:move l1 (3,6)

《实时控制软件设计》第三组第二天工作日志

Daily Summary 2016.1.5 今天由于成员闲余时间较少,完成的任务主要有一下两项: 界面组开会讨论了界面所需完成的功能,对之前的初步想法进行了修改,得到了最终界面所需各模块并编写了文档. 控制组根据界面组的讨论结果,分析了接下来编程的大致框架与内容,得到两套方案并编写了文档. 具体各部分内容如下: 界面组讨论结果: 原有界面模块 修改后界面模块 修改说明: 修改1处:删除“暂定”按钮 修改2处:删除“投币入口”按钮 修改3处:改为“找零”按钮 修改4处:改为“实付”按钮 修改5处