线段的平移和旋转
2015-12-03 10:16
423 查看
//github不会用,试了很久不知道怎么上传代码
#include <iostream>
using namespace std;
#include <stdlib.h>
#include <Eigen/Dense>
#include <math.h>
using namespace std;
using Eigen::MatrixXd;
int main()
{
int option;
struct point {
double px;
double py;
};
struct point p1;
struct point p2;
cout<<"请输入线段的起点"<<endl;
cin>>p1.px;
cin>>p1.py;
cout<<"请输入线段的终点"<<endl;
cin>>p2.px;
cin>>p2.py;
cout<<"请输入线段的操作"<<endl<<"move:0"<<endl<<"rotation:1"<<endl;
cin>>option;
switch(option)
{
case 0:{
double transp[2];
cout<<"请输入平移向量"<<endl;
cin>>transp[0];
cin>>transp[1];
p1.px+=transp[0];
p1.py+=transp[1];
p2.px+=transp[0];
p2.py+=transp[1];
cout<<"平移的结果"<<endl;
cout<<"("<<p1.px<<","<<p1.py<<")"<<"("<<p2.px<<","<<p2.py<<")"<<endl;
break;
}
case 1:{
MatrixXd m(2,2);
double alfa;
cout<<"请输入旋转角度(0~360)"<<endl;
cin>>alfa;
double pi=3.141592654;
alfa=alfa/180*pi;
m(0,0)=cos(alfa);
m(0,1)=sin(alfa);
m(1,0)=-sin(alfa);
m(1,1)=cos(alfa);
double temp1=p1.px*m(0,0)+p1.py*m(1,0);
double temp2=p1.px*m(0,1)+p1.py*m(1,1);
double temp3=p2.px*m(0,0)+p2.py*m(1,0);
double temp4=p2.px*m(0,1)+p2.py*m(1,1);
p1.px=temp1;
p1.py=temp2;
p2.px=temp3;
p2.px=temp4;
cout<<"旋转的结果"<<endl;
cout<<"("<<p1.px<<","<<p1.py<<")"<<"("<<p2.px<<","<<p2.py<<")"<<endl;
}
}
return 0;
}
#include <iostream>
using namespace std;
#include <stdlib.h>
#include <Eigen/Dense>
#include <math.h>
using namespace std;
using Eigen::MatrixXd;
int main()
{
int option;
struct point {
double px;
double py;
};
struct point p1;
struct point p2;
cout<<"请输入线段的起点"<<endl;
cin>>p1.px;
cin>>p1.py;
cout<<"请输入线段的终点"<<endl;
cin>>p2.px;
cin>>p2.py;
cout<<"请输入线段的操作"<<endl<<"move:0"<<endl<<"rotation:1"<<endl;
cin>>option;
switch(option)
{
case 0:{
double transp[2];
cout<<"请输入平移向量"<<endl;
cin>>transp[0];
cin>>transp[1];
p1.px+=transp[0];
p1.py+=transp[1];
p2.px+=transp[0];
p2.py+=transp[1];
cout<<"平移的结果"<<endl;
cout<<"("<<p1.px<<","<<p1.py<<")"<<"("<<p2.px<<","<<p2.py<<")"<<endl;
break;
}
case 1:{
MatrixXd m(2,2);
double alfa;
cout<<"请输入旋转角度(0~360)"<<endl;
cin>>alfa;
double pi=3.141592654;
alfa=alfa/180*pi;
m(0,0)=cos(alfa);
m(0,1)=sin(alfa);
m(1,0)=-sin(alfa);
m(1,1)=cos(alfa);
double temp1=p1.px*m(0,0)+p1.py*m(1,0);
double temp2=p1.px*m(0,1)+p1.py*m(1,1);
double temp3=p2.px*m(0,0)+p2.py*m(1,0);
double temp4=p2.px*m(0,1)+p2.py*m(1,1);
p1.px=temp1;
p1.py=temp2;
p2.px=temp3;
p2.px=temp4;
cout<<"旋转的结果"<<endl;
cout<<"("<<p1.px<<","<<p1.py<<")"<<"("<<p2.px<<","<<p2.py<<")"<<endl;
}
}
return 0;
}
相关文章推荐
- UILabel的换行问题
- maven mirror
- 销售发货自动批次
- IOS通知机制
- Python练习程序(二)文件处理和列表元组
- Dubbo:关于与高版本的Spring集成的事情
- iOS tableView的cell的重用问题
- hdu 3460
- 堆栈形象说明
- RabbitMQ 简单测试
- 登录SSM
- linux 添加基于weblogic的nodemanager的服务
- hdu 3460
- android RTL布局支持说明
- Apache禁止指定的user_agent、指定目录被访问
- 分析函数进阶(一)
- 52种8阶环(2015-11-18 17:21:51)
- 菜单栏[MenuStrip]
- [Sublime Text 插件] 新建固定格式的Lua文件
- 协议中UART的两种模式 【转】