HDU

来源:互联网 发布:故宫博物馆淘宝 编辑:程序博客网 时间:2024/06/16 06:29

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2898

解题思路:http://blog.csdn.net/Nightmare_ak/article/details/78363623

这里写图片描述

AC代码:

#include<cstdio>#include<cmath>using namespace std;struct Pos{    double _x, _y, _z;};int main(){    Pos a, b, c;//a为主旋转轴    double xita;    for (;scanf("%lf%lf%lf%lf%lf%lf%lf", &b._x, &b._y, &b._z, &a._x, &a._y, &a._z, &xita) == 7;)    {        double cosbeta = a._x / sqrt(a._x*a._x + a._z*a._z);        double sinbeta = a._z / sqrt(a._x*a._x + a._z*a._z);        double cosaerfa = sqrt(a._x*a._x + a._z*a._z) / sqrt(a._x*a._x + a._y*a._y + a._z*a._z);        double sinaerfa = a._y / sqrt(a._x*a._x + a._y*a._y + a._z*a._z);        c._x = b._x, c._y = b._y, c._z = b._z;        b._x = c._x*cosbeta + c._z*sinbeta, b._y = c._y, b._z = c._z*cosbeta - c._x*sinbeta;        c._x = b._x, c._y = b._y, c._z = b._z;        b._x = c._x*cosaerfa + c._y*sinaerfa, b._y = c._y*cosaerfa - c._x*sinaerfa, b._z = c._z;        c._x = b._x, c._y = b._y, c._z = b._z;        b._x = c._x, b._y = c._y*cos(xita) - c._z*sin(xita), b._z = c._z*cos(xita) + c._y*sin(xita);        c._x = b._x, c._y = b._y, c._z = b._z;        b._x = c._x*cosaerfa - c._y*sinaerfa, b._y = c._y*cosaerfa + c._x*sinaerfa, b._z = c._z;        c._x = b._x, c._y = b._y, c._z = b._z;        b._x = c._x*cosbeta - c._z*sinbeta, b._y = c._y, b._z = c._z*cosbeta + c._x*sinbeta;        printf("%.3f %.3f %.3f\n", b._x, b._y, b._z);    }    return 0;}