1 #include <iostream> 2 #include <stdlib.h> 3 #include <string.h> 4 #include <Eigen/Dense> 5 #include <math.h> 6 using namespace std; 7 using namespace Eigen; 8 using Eigen::MatrixXd; 9 float pi=3.141592; 10 RowVector2f move(char str[]) 11 { 12 RowVector2f R; 13 R(0)=0; 14 R(1)=0; 15 char a[60],b[60]; 16 int i,j,k; 17 j=0,k=0; 18 for(i=1;str[i]!=',';i++) 19 { 20 R(0)=10*R(0)+str[i]-'0'; 21 j++; 22 } 23 i++; 24 for(i;str[i]!=')';i++) 25 { 26 R(1)=10*R(1)+str[i]-'0'; 27 k++; 28 } 29 return R; 30 } 31 int main() 32 { 33 int n; 34 char name[60]; 35 double ang,deg; 36 char T1[60]; 37 char T2[60]; 38 char T3[60]; 39 char T4[60]; 40 char T5[60]; 41 RowVector2f R1; 42 RowVector2f R2; 43 RowVector2f R3; 44 RowVector2f R4; 45 Matrix2f Rot; 46 int C=1; 47 while(C!=0) 48 { 49 cout<<"Please input name of graph:"; 50 cin>>name; 51 cout<<"Please input number of points:"; 52 cin>>n; 53 cout<<"Please input the endpoint:"; 54 if(n==1) 55 { 56 cin>>T1; 57 R1=move(T1); 58 } 59 else if(n==2) 60 { 61 cin>>T1; 62 cin>>T2; 63 R1=move(T1); 64 R2=move(T2); 65 } 66 else if(n==3) 67 { 68 cin>>T1; 69 cin>>T2; 70 cin>>T3; 71 R1=move(T1); 72 R2=move(T2); 73 R3=move(T3); 74 } 75 else 76 { 77 cout<<"!Input Error!"; 78 } 79 cout<<"Please input a command:"; 80 cin>>T4; 81 if( strcmp(T4,"Rotate")==0) 82 { 83 cout<<"Please input angle:"; 84 cin>>ang; 85 deg=ang/180*pi; 86 Rot(0,0)=cos(deg); 87 Rot(0,1)=sin(deg); 88 Rot(1,0)=-sin(deg); 89 Rot(1,1)=cos(deg); 90 if(n==1) 91 { 92 R1=R1*Rot; 93 cout<<"("<<R1<<")"<<endl; 94 } 95 if(n==2) 96 { 97 R1=R1*Rot; 98 R2=R2*Rot; 99 cout<<"("<<R1<<")("<<R2<<")"<<endl; 100 } 101 if(n==3) 102 { 103 R1=R1*Rot; 104 R2=R2*Rot; 105 R3=R3*Rot; 106 cout<<"("<<R1<<")("<<R2<<")("<<R3<<")"<<endl; 107 } 108 } 109 if( strcmp(T4,"Move")==0) 110 { 111 cout<<"Please input the coordinate:"; 112 cin>>T5; 113 R4=move(T5); 114 if(n==1) 115 { 116 R1=R1+R4; 117 cout<<"("<<R1<<")"<<endl; 118 } 119 if(n==2) 120 { 121 R1=R1+R4; 122 R2=R2+R4; 123 cout<<"("<<R1<<")("<<R2<<")"<<endl; 124 } 125 if(n==3) 126 { 127 R1=R1+R4; 128 R2=R2+R4; 129 R3=R3+R4; 130 cout<<"("<<R1<<")("<<R2<<")("<<R3<<")"<<endl; 131 } 132 } 133 } 134 135 return 0; 136 }