1 #include <iostream>
2 #include <stdlib.h>
3 #include <Eigen/Dense>
4 #include <math.h>
5 using namespace std;
6 using Eigen::MatrixXd;
7 MatrixXd extract(char str[])
8 {
9 MatrixXd p(1,2);
10 int u;
11 int i,j;
12 char a[10];
13 for(i=0;i<=49&&str[i]!='(';i++);
14 for(j=0;j<=49&&str[j]!=',';j++);
15 for(u=0;u<=10&&i!=j-1;u++)
16 {
17 i++;
18 a[u]=str[i];
19 }
20
21 p(0,0)=atof(a);
22 for(i=j;i<=49&&str[i]!=')';i++);
23 for(u=0;u<=10&&j!=i-1;u++)
24 {
25 j++;
26 a[u]=str[j];
27 }
28 p(0,1)=atof(a);
29 return p;
30 }
31 int main()
32 {
33 char name[15];
34 int n;
35 double avg,deg;
36 float pi=3.14159265;
37 char str1[20];
38 char str2[20];
39 char str3[20];
40 char str4[15];
41 char str5[15];
42 char str6[15];
43 MatrixXd rot(2,2);
44 MatrixXd p1(1,2);
45 MatrixXd p2(1,2);
46 MatrixXd p3(1,2);
47 MatrixXd p4(1,2);
48 cout<<"请输入 ";
49 cin>>name;
50 cin>>n;
51 switch(n)
52 {
53 case 1:
54 {
55 cin>>str1;
56 p1=extract(str1);
57 }
58 break;
59 case 2:
60 {
61 cin>>str1;
62 p1=extract(str1);
63 cin>>str2;
64 p2=extract(str2);
65 }
66 break;
67 case 3:
68 {
69 cin>>str1;
70 p1=extract(str1);
71 cin>>str2;
72 p2=extract(str2);
73 cin>>str3;
74 p3=extract(str3);
75 }
76 break;
77 default:cout<<"输入错误";
78
79 }
80 cout<<"请输入操作指令"<<endl;
81 cin>>str4;
82 if(str4[0]=='m'&&str4[1]=='o'&&str4[2]=='v'&&str4[3]=='e'&&str4[4]==0)
83 {
84 cin>>str5;
85 cin>>str6;
86 p4=extract(str6);
87 if(n==1)
88 {
89 p1=p1+p4;
90 cout<<"("<<p1<<")"<<endl;
91 }
92 else if(n==2)
93 {
94 p1=p1+p4;
95 p2=p2+p4;
96 cout<<"("<<p1<<")"<<"("<<p2<<")"<<endl;
97 }
98 else
99 {
100 p1=p1+p4;
101 p2=p2+p4;
102 p3=p3+p4;
103 cout<<"("<<p1<<")"<<"("<<p2<<")"<<"("<<p3<<")"<<endl;
104 }
105 }
106 else if(str4[0]=='r'&&str4[1]=='o'&&str4[2]=='t'&&str4[3]=='a'&&str4[4]=='t'&&str4[5]=='e'&&str4[6]==0)
107 {
108 cin>>str5;
109 cin>>avg;
110 deg=avg/180*pi;
111 rot(0,0)=cos(deg);
112 rot(0,1)=sin(deg);
113 rot(1,0)=-sin(deg);
114 rot(1,1)=cos(deg);
115 if(n==1)
116 {
117 p1=p1*rot;
118 cout<<"("<<p1<<")"<<endl;
119 }
120 else if(n==2)
121 {
122 p1=p1*rot;
123 p2=p2*rot;
124 cout<<"("<<p1<<")"<<"("<<p2<<")"<<endl;
125 }
126 else
127 {
128 p1=p1*rot;
129 p2=p2*rot;
130 p3=p3*rot;
131 cout<<"("<<p1<<")"<<"("<<p2<<")"<<"("<<p3<<")"<<endl;
132 }
133
134 }
135 else
136 {
137 cout<<"输入出错"<<endl;
138 }
139 return 0;
140 }