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 }
![]()
![]()