欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Points on Cycle

程序员文章站 2022-03-29 17:53:10
...

这次写这个旋转向量法,完全就是套公式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;  
}