实时控制软件设计 第一次作业 Draw
#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(,);y+=p(,);
cout<<x<<','<<y<<endl;
}
void Point::rotang(double deg){
cout<<x<<','<<y<<endl;
MatrixXd rot(,);//旋转矩阵
rot(,)=cos(deg);
rot(,)=sin(deg);
rot(,)=-sin(deg);
rot(,)=cos(deg);
x=rot(,)*x+rot(,)*y;
y=rot(,)*x+rot(,)*y;
cout<<x<<','<<y<<endl;
}
//点类定义完成 class Element
{
public:
char name[];//名称
int n;
Point pi[];
void Showelement(void);
}; void Element::Showelement(){
cout<<name;
int i;
for(i=;i<=n;i++)pi[i-].Showpoint();
}
//元素类定义完成 Element Move(Element e,MatrixXd p){
int i;
for(i=;i<=e.n;i++)e.pi[i-].movexy(p);
return e;
}
//元素平移
Element Rotate(Element e,double deg){
int i;
for(i=;i<=e.n;i++)e.pi[i-].rotang(deg);
cout<<"旋转命令已执行"<<endl;
return e;
}
//元素旋转 MatrixXd Getpoint(char str[]){
MatrixXd p(,);
int u;
int i,j;
char a[];
for(i=;i<=&&str[i]!='(';i++);
for(j=;j<=&&str[j]!=',';j++);
for(u=;u<=&&i!=j-;u++)
{
i++;
a[u]=str[i];
} p(,)=atof(a);
for(i=j;i<=&&str[i]!=')';i++);
for(u=;u<=&&j!=i-;u++)
{
j++;
a[u]=str[j];
}
p(,)=atof(a);
return p;
}
//从字符串获取点 int main()
{
MatrixXd p1(,),p2(,),p3(,),p4(,);
//用于存放输入点以及位移向量
char str1[],str2[],str3[],str4[],str5[],str6[];
double ang;
Point P1,P2,P3,P4; Element e1;
cout<<"请输入元素(名称、点数、点坐标):";
cin>> e1.name;
cin>>e1.n;
switch(e1.n){
case :
cin>>str1;p1=Getpoint(str1);e1.pi[].x=p1(,), e1.pi[].y=p1(,);
break;
case :
cin>>str1;p1=Getpoint(str1);e1.pi[].x=p1(,), e1.pi[].y=p1(,);
cin>>str2;p2=Getpoint(str2);e1.pi[].x=p2(,), e1.pi[].y=p2(,);
break;
case :
cin>>str1;p1=Getpoint(str1);e1.pi[].x=p1(,), e1.pi[].y=p1(,);
cin>>str2;p2=Getpoint(str2);e1.pi[].x=p2(,), e1.pi[].y=p2(,);
cin>>str3;p3=Getpoint(str3);e1.pi[].x=p3(,), e1.pi[].y=p3(,);
break;
default:cout<<"输入错误";
}
//根据点数获取内容并构造Element对象 cout<<"请对当前输入元素输入操作命令:";
cin>>str4;cin>>str5;cin>>str6;
if(str4[]=='m'&&str4[]=='o'&&str4[]=='v'&&str4[]=='e'){
cout<<"命令为move"<<endl;
p4=Getpoint(str6);
Element e2;e2=Move(e1,p4);
e2.Showelement();
cout<<endl;
}
if(str4[]=='r'&&str4[]=='o'&&str4[]=='t'&&str4[]=='a'&&str4[]=='t'&&str4[]=='e'&&str4[]==){
ang=atof(str6)*3.1415926/;
cout<<"命令为rotate"<<endl;
Element e2;e2=Rotate(e1,ang);
e2.Showelement();
cout<<endl;
} }
实时控制软件设计 第一次作业 Draw的更多相关文章
- 《实时控制软件设计》之Github提交作业步骤
在掌握GIT/GITHUB基本操作后,接下来把第一次的编程作业提交到 https://github.com/RTCSD15/HOMEWORK1 ,把第二次的编程作业提交到https://github. ...
- 实时控制软件设计作业_01——汽车ABS系统分析
制动防抱死系统(antilock brake system)简称ABS.作用就是在汽车制动时,自动控制制动器制动力的大小,使车轮不被抱死,处于边滚边滑(滑移率在20%左右)的状态,以保证车轮与地面的附 ...
- 《实时控制软件设计》第一周作业 欧梓峰 U201317662 (更新)
CNC 插补计算程序分析 前言:插补(Interpolation),即机床数控系统依照一定方法确定刀具运动轨迹的过程.一般是已知起点坐标.终点坐标和轨迹,由数控插补计算程序实时的算出各个中间的坐标来拟 ...
- 实时控制软件设计第一周作业-汽车ABS软件系统案例分析
汽车ABS软件系统案例分析 ABS 通过控制作用于车轮制动分泵上的制动管路压力,使汽车在紧急刹车时车轮不会抱死,这样就能使汽车在紧急制动时仍能保持较好的方向稳定性. ABS系统一般是在普通制动系统基础 ...
- 实时控制软件设计 第二次作业 myRobot
#include<iostream> #include <Eigen/Dense> #include <math.h> #include <vector> ...
- 《实时控制软件设计》之Automation Studio开发环境
Automation Studio是贝加莱公司的控制软件开发平台,软件可运行在贝加莱的基于PC的控制器上,基于Automation Studio我们可构建一个完整的控制软件构建.测试和仿真运行平台.本 ...
- C语言成语设计第一次作业
一 1.求圆面积和周长 输入圆的半径,计算圆的周长和面积. 2.流程图 3.测试数据及运行结果 测试数据:r=7 运行结果 4.实验分析 问题:第一次输入提示时未加双引号 解决办法:发现问题后加了双引 ...
- 主要由顶点容器构成的平面图形类(Shape)——(第一次作业Draw类定义升级)
// https://github.com/orocos/orocos_kinematics_dynamics/blob/master/orocos_kdl/src/frames.hpp // Vec ...
- 字符串处理——(第一次作业Draw输入命令处理部分升级)
#include<iostream> #include<sstream> //使用istringstream必须包含的头文件 #include<string> #i ...
随机推荐
- document.all.wb.ExecWB
<%@ page language="java" pageEncoding="UTF-8"%> <%@ taglib uri=&quo ...
- 《精通C#》委托与事件(10章)
委托可用来解耦以及状态变化的实时通知,以及其他的一些作用,但是经验所限,目前还未遇见.网上的大多数例子都是类似于,使用委托,然后用console返回方法的返回值,有时候会在想,委托的通知如果是这样的话 ...
- 20169212《Linux内核原理与分析》第七周作业
实验 给MenuOS增加time和time-asm命令的方法: 更新menu代码到最新版 再main()函数中增加MenuConfig 增加对应的Time函数和TimeAsm函数(这里的函数要换成我们 ...
- 深入浅出Mybatis系列(五)---TypeHandler简介及配置(mybatis源码篇)
上篇文章<深入浅出Mybatis系列(四)---配置详解之typeAliases别名(mybatis源码篇)>为大家介绍了mybatis中别名的使用,以及其源码.本篇将为大家介绍TypeH ...
- Codeforces Round #373 (Div. 2) E. Sasha and Array
题目链接 分析:矩阵快速幂+线段树 斐波那契数列的计算是矩阵快速幂的模板题,这个也没什么很多好解释的,学了矩阵快速幂应该就知道的东西= =这道题比较巧妙的在于需要用线段树来维护矩阵,达到快速查询区间斐 ...
- PDF 补丁丁 0.5.0.1816 测试版发布:新界面新体验
新的测试版简化了界面,操作更直观,同时修复了旧版本的一些错误. 欢迎各位下载测试文件试用,并提出宝贵意见.
- CentOS x64上Matlab R2015b的镜像安装方法与卸载
0. 原料 (1). CentOS_x64系统 CentOS 2.6.32-573.el6.x86_64 (2). Matlab R2015b_glnxa64.iso,可以从百度网盘下载到:链接: ...
- jdbc链接mysql插入数据后显示问号
1.在cmd中进入mysql查看默认的编码格式:mysql> show variables like "%char%"; 若不是utf8(因为我用的是utf8),关掉mysq ...
- HTML+CSS--继续学习
为网页中的文字设置字体为宋体. body{font-family:"宋体";} 文字以斜体样式在浏览器中显示: p a{font-style:italic;} 设置文字以粗体样式显 ...
- 处理xml c#
using System.Xml; using System; using System.Text; using System.Net; using System.Collections; using ...