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

#include <iostream> #include <cstring> #include <math.h> #include <Eigen/Dense> using Eigen::MatrixXd; using namespace std; class Point {  public:  double x;  double y;  void Showpoint(void);  void movexy(MatrixXd p);//平移算子  void rotang(double ang);//旋转算子 }; void Point::Showpoint(){  cout<<‘(‘<<x<<‘,‘<<y<<‘)‘; } void Point::movexy(MatrixXd p){  cout<<x<<‘,‘<<y<<endl;  x+=p(0,0);y+=p(0,1);  cout<<x<<‘,‘<<y<<endl; } void Point::rotang(double deg){  cout<<x<<‘,‘<<y<<endl;      MatrixXd rot(2,2);//旋转矩阵      rot(0,0)=cos(deg);         rot(0,1)=sin(deg);         rot(1,0)=-sin(deg);         rot(1,1)=cos(deg);         x=rot(0,0)*x+rot(0,1)*y;         y=rot(1,0)*x+rot(1,1)*y;         cout<<x<<‘,‘<<y<<endl; } //点类定义完成   class Element {  public:  char name[20];//名称  int n;  Point pi[3];  void Showelement(void); };

void Element::Showelement(){  cout<<name;  int i;  for(i=1;i<=n;i++)pi[i-1].Showpoint(); } //元素类定义完成

Element Move(Element e,MatrixXd p){  int i;  for(i=1;i<=e.n;i++)e.pi[i-1].movexy(p);  return e; } //元素平移 Element Rotate(Element e,double deg){  int i;  for(i=1;i<=e.n;i++)e.pi[i-1].rotang(deg);  cout<<"旋转命令已执行"<<endl;  return e; } //元素旋转

MatrixXd Getpoint(char str[]){  MatrixXd p(1,2);  int u;             int i,j;             char a[10];             for(i=0;i<=49&&str[i]!=‘(‘;i++);             for(j=0;j<=49&&str[j]!=‘,‘;j++);             for(u=0;u<=10&&i!=j-1;u++)             {                 i++;                 a[u]=str[i];             }                          p(0,0)=atof(a);             for(i=j;i<=49&&str[i]!=‘)‘;i++);             for(u=0;u<=10&&j!=i-1;u++)             {                 j++;                 a[u]=str[j];             }             p(0,1)=atof(a);             return p; } //从字符串获取点

int main() {   MatrixXd p1(1,2),p2(1,2),p3(1,2),p4(1,2);   //用于存放输入点以及位移向量   char str1[20],str2[20],str3[20],str4[20],str5[20],str6[20];   double ang;   Point P1,P2,P3,P4;       Element e1;   cout<<"请输入元素(名称、点数、点坐标):";   cin>> e1.name;   cin>>e1.n;   switch(e1.n){    case 1:     cin>>str1;p1=Getpoint(str1);e1.pi[0].x=p1(0,0), e1.pi[0].y=p1(0,1);     break;     case 2:      cin>>str1;p1=Getpoint(str1);e1.pi[0].x=p1(0,0), e1.pi[0].y=p1(0,1);      cin>>str2;p2=Getpoint(str2);e1.pi[1].x=p2(0,0), e1.pi[1].y=p2(0,1);     break;    case 3:     cin>>str1;p1=Getpoint(str1);e1.pi[0].x=p1(0,0), e1.pi[0].y=p1(0,1);     cin>>str2;p2=Getpoint(str2);e1.pi[1].x=p2(0,0), e1.pi[1].y=p2(0,1);     cin>>str3;p3=Getpoint(str3);e1.pi[2].x=p3(0,0), e1.pi[2].y=p3(0,1);     break;    default:cout<<"输入错误";   } //根据点数获取内容并构造Element对象

cout<<"请对当前输入元素输入操作命令:"; cin>>str4;cin>>str5;cin>>str6; if(str4[0]==‘m‘&&str4[1]==‘o‘&&str4[2]==‘v‘&&str4[3]==‘e‘){  cout<<"命令为move"<<endl;  p4=Getpoint(str6);  Element e2;e2=Move(e1,p4);  e2.Showelement();  cout<<endl; } if(str4[0]==‘r‘&&str4[1]==‘o‘&&str4[2]==‘t‘&&str4[3]==‘a‘&&str4[4]==‘t‘&&str4[5]==‘e‘&&str4[6]==0){  ang=atof(str6)*3.1415926/180;  cout<<"命令为rotate"<<endl;  Element e2;e2=Rotate(e1,ang);  e2.Showelement();  cout<<endl; }       }

时间: 2024-09-30 23:00:41

实时控制软件设计 第一次作业的相关文章

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

1 include <iostream> 2 #include<Eigen/Dense> 3 #include<stdlib.h> 4 #include<cmath> 5 using Eigen::MatrixXd; 6 using namespace std; 7 MatrixXd input(char f[]){ 8 MatrixXd p(1,2); 9 char a[256]; 10 char b[256]; 11 int x=0,y=0; 12 in

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

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

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

//代码: #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. 阅读笔记 结合本周课堂所讲的实时操作系统知识内容,浏览如下商用和开源实时操作系统网站,写一段文字向其他同学简要介绍下某个实时操作系统的性能特点或进行操作系统间性能的比较: Vxworks: www.windriver.com/products/vxworks QNX:www.qnx.com Xenomai: xenomai.org Intime: www.tenasys.com/tenasys-products/intime-rtos-family/overview-rtos Sylixo

实时控制软件设计第一周作业-汽车ABS软件系统案例分析

汽车ABS软件系统案例分析 ABS 通过控制作用于车轮制动分泵上的制动管路压力,使汽车在紧急刹车时车轮不会抱死,这样就能使汽车在紧急制动时仍能保持较好的方向稳定性. ABS系统一般是在普通制动系统基础上加装了轮速传感器,电子控制单元,制动压力调节器.制动时,通过分析传感器车速轮速数据判断车轮是否处于抱死拖滑状态,并据此控制制动压力调节器进行高频增压,保压,减压,防止车轮抱死. Q1.该系统有哪些强实时功能需求?需要对哪些实时事件进行实时响应,对允许的实时延迟的数量级进行估计. A1.强实时需求:

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

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

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

以汽车ABS系统的软件系统进行案例分析: 一.强实时功能需求有:1.汽车车轮转速的实时监测,实时计算出轮速.参考车速.车轮加速度.滑移率等参数: 2.系统故障诊断,故障诊断分为两部分,分别是启动时故障诊断和行驶状态下故障诊断. 实时事件实时响应:1.制动压力调节,当车轮处于抱死的临界状态时,调节制动压力: 2.系统故障处理,如果发现故障,则应及时警示. 二.ABS的软件系统需要设计2个实时任务,分别是汽车车轮状态监测和行驶状态下故障诊断. 三.以上两个实时任务均为时间触发:1.为保证ABS的实时

《实时控制软件设计》第一周作业 欧梓峰 U201317662

CNC 插补计算程序分析 一.该系统有哪些强实时功能需求?需要对哪些实时事件进行实时响应,对允许的实时延迟的数量级进行估计. 答:该系统对如何控制刀具或工具的运动有强的实时控制需求,通过插补控制和位置控制以及主轴控制实现一边插补进行运算,一边进行加工,才能完成程序规定的加工任务,反过来讲,才能实时控制加工. 二.如果你是软件设计者,要实现这些实时功能,要设计几个实时任务? 答:①插补计算任务:对轮廓线的起点到终点之间再密集的计算出有限个坐标点,刀具沿着这些坐标点移动,来逼近理论轮廓,以保证切削过

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

题目: 第一步: 写一个根据输入坐标生成一个平面图形(点.线段和三角形)并能对该几何图形进行平移和旋转操作的命令行 “软件”,要求: 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)