现在的位置: 首页 > 综合 > 正文

HDU 4998

2017年11月21日 ⁄ 综合 ⁄ 共 761字 ⁄ 字号 评论关闭

额,弧度什么的在哪点转最后都是一样的,然后你把原点当始点,然后模拟算出末点,套用公式,over。

#include <cstdio>
#include <cstring>
#include <string>
#include <algorithm>
#include <iostream>
#include <vector>
#include <queue>
#include <stack>
#include <cmath>
using namespace std;

#define PI acos(-1)

main()
{
     double stx, sty, endx, endy, x, y, p, endp, xx, yy;
     int t, n, i, j, k;
     cin>>t;
     while(t--){
         cin>>n;
         stx=sty=xx=yy=endp=0;
         while(n--){
              scanf("%lf %lf %lf",&x,&y,&p);
              endp+=p;
              if(endp>=2*PI) endp-=2*PI;
              endx=(xx-x)*cos(p)-(yy-y)*sin(p)+x;
              endy=(xx-x)*sin(p)+(yy-y)*cos(p)+y;
              xx=endx;yy=endy;
        }
        
        x=((endx-stx*cos(endp)+sty*sin(endp))*(1-cos(endp))-(endy-stx*sin(endp)-sty*cos(endp))*sin(endp))/(2-2*cos(endp));
        y=((endx-stx*cos(endp)+sty*sin(endp))*(1-cos(endp))-(1-cos(endp))*(1-cos(endp))*x)/((1-cos(endp))*sin(endp));
        printf("%.10lf %.10lf %.10lf\n",x,y,endp);
     }    
}
【上篇】
【下篇】

抱歉!评论已关闭.