这次写这个旋转向量法,完全就是套公式x'=xsina-ysina;y'=xsina+ycosa;但是我还是做得很磕磕碰碰,每次输出,把需要的数据输入要结构体或者数组里面都是件难事,让我葛优瘫一下,但是,这次主要还是数学题目所以好理解也好做,不过要注意输出的条件,当y不等输出y小的,否则输出x小的。当然最后还是借鉴了呀。
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
#define eps 1e-8
#define PI acos(-1.0)
using namespace std;
struct point{
double x,y;
}p,q;
int sgn(double n){
if(fabs(n)<eps)return 0;
if(n<0)return -1;
return 1;
}
int main()
{
int t,i,j,k;
scanf("%d",&t);
while(t--){
scanf("%lf%lf",&p.x,&p.y);
double r=sqrt(p.x*p.x+p.y*p.y);
double angle=acos(p.x/r);
if(sgn(p.y)<0)angle=2.0*PI-angle;
double x1=r*cos(angle+2.0*PI/3.0);
double y1=r*sin(angle+2.0*PI/3.0);
double x2=r*cos(angle-2.0*PI/3.0);
double y2=r*sin(angle-2.0*PI/3.0);
if(angle>=PI/2.0&&angle<3.0*PI/2.0)
printf("%.3lf %.3lf %.3lf %.3lf\n",x1,y1,x2,y2);
else
printf("%.3lf %.3lf %.3lf %.3lf\n",x2,y2,x1,y1);
}
return 0;
}