青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

算法學社
記錄難忘的征途
posts - 141,comments - 220,trackbacks - 0

題目描述:

   定義一種變換向量的語言,其語法有這么幾種:
      1. translate tx ty tz  功能:(x,y,z) = (x+tx,y+ty,z+tz)
      2. scale a b c         功能:(x,y,z) = (ax,by,cz)
      3. rotate tx ty tz angle  功能:讓x,y,z以tx,ty,tz為軸逆時針旋轉angle。
      4. rotate k .... end   功能: 重復執行...k次
    給若干個向量,輸出對應的變換后的向量。

吐槽:

    1. 注意-0.0的情況。
    2. 樣例過了基本就過了。

算法分析:

    因為語法4,所以不難想到要使用矩陣來變換向量。
    2的矩陣變換都比較直觀,3的矩陣變換有公式。
    關鍵是1的變換矩陣我糾結了好久。
    其實把矩陣變成4×4就可以了
        1  0  0  0
        0  1  0  0
        0  0  1  0
        tx ty tz 1
    最后用[x,y,z,1]去乘最終變換矩陣就可以了。。。
  1 #include<iostream>
  2 #include<cmath>
  3 #include<cstdio>
  4 #include<string>
  5 using namespace std;
  6 const int N = 4;
  7 struct matrix {
  8     double num[N][N];
  9     matrix (double a){
 10         for(int i=0;i<N;i++)
 11             for(int j=0;j<N;j++)
 12                 num[i][j] = (i==j)*a;
 13     }
 14     matrix(double x,double y,double z){
 15         for(int i=0;i<N;i++)
 16             for(int j=0;j<N;j++)
 17                 num[i][j] = (i==j)*1.0;
 18         num[3][0] = x;
 19         num[3][1] = y;
 20         num[3][2] = z;
 21     }
 22     matrix(double x,double y,double z, int X){
 23         for(int i=0;i<N;i++)
 24             for(int j=0;j<N;j++)
 25                 num[i][j] =(i==j)*1.0;
 26         num[0][0] = x; num[1][1] = y; num[2][2] = z;
 27     }
 28     matrix(double P[3],double ang){
 29         for(int i=0;i<N;i++)
 30             for(int j=0;j<N;j++) num[i][j] = (i==j)*1.0;
 31         double flag [3][3] = {0,1.0,-1.0,-1.0,0,1.0,1.0,-1.0,0}, sum = P[0] + P[1] + P[2];
 32         for(int i=0;i<3;i++)
 33             for(int j=0;j<3;j++) if(i == j)
 34                 num[i][j] = P[i]*P[i] + (1-P[i]*P[i]) * cos(ang);
 35                 else num[i][j] = P[i]*P[j]*(1-cos(ang)) + (sum - P[i] - P[j]) * sin(ang) * flag[i][j];
 36     }
 37 };
 38 matrix operator * (const matrix& a, const matrix& b){
 39     matrix c(0.0);
 40     for(int i=0; i<N; i++)
 41         for(int j=0; j<N; j++)
 42             for(int k = 0; k<N; k++)
 43                 c.num[i][j] += a.num[i][k] * b.num[k][j];
 44     return c;
 45 }
 46 matrix pow(matrix a, int b){
 47     matrix ans(1.0), t = a;
 48     while(b) {
 49         if(b&1) ans = ans * t;
 50         t = t * t; b>>=1;
 51     }
 52     return ans;
 53 }
 54 const double pi = acos(-1.0);
 55 matrix dfs(){
 56     matrix ans(1.0);
 57     string cmd;
 58     int k; double x,y,z,a;
 59     for(;;){
 60         cin >> cmd;
 61         if(cmd=="end") return ans;
 62         else if(cmd=="repeat"){
 63             scanf("%d",&k);
 64             matrix temp = dfs();
 65             temp = pow(temp, k);
 66             ans = ans * temp;
 67         }
 68         else {
 69             scanf("%lf%lf%lf",&x,&y,&z);
 70             if(cmd == "translate"){
 71                 matrix temp(x, y, z); ans = ans * temp;
 72             }
 73             else if(cmd == "scale"){
 74                 matrix temp(x, y, z, 0); ans = ans * temp;
 75             }
 76             else {
 77                 scanf("%lf",&a);
 78                 a = a/180.0*pi;
 79                 double sum = sqrt(x*x + y*y +z*z);
 80                 double p[3] = {x/sum, y/sum, z/sum};
 81                 matrix temp(p,a); ans = ans * temp;
 82             }
 83         }
 84     }
 85 }
 86 double pre(double x){
 87     return x + 1e-6;
 88 }
 89 int main(){
 90     int n;
 91     while(~scanf("%d",&n) && n){
 92         matrix t = dfs();
 93         double x,y,z,px,py,pz;
 94         while(n--){
 95             scanf("%lf%lf%lf",&x,&y,&z);
 96             px = x*t.num[0][0] + y*t.num[1][0] +z*t.num[2][0] + t.num[3][0];
 97             py = x*t.num[0][1] + y*t.num[1][1] +z*t.num[2][1] + t.num[3][1];
 98             pz = x*t.num[0][2] + y*t.num[1][2] +z*t.num[2][2] + t.num[3][2];
 99             printf("%.2lf %.2lf %.2lf\n",pre(px),pre(py),pre(pz));
100         }
101         puts("");
102     }
103 }
104 
posted on 2012-06-24 16:01 西月弦 閱讀(438) 評論(1)  編輯 收藏 引用 所屬分類: 解題報告

FeedBack:
# re: hdu 4087 仿射幾何 + 矩陣乘法[未登錄]
2012-06-26 00:04 | David
這個為什么叫做仿射幾何呢?  回復  更多評論
  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久国产婷婷国产香蕉| 亚洲欧美日产图| 久久夜精品va视频免费观看| 亚洲综合日韩| 久久成人亚洲| 久久久五月天| 欧美激情精品久久久久| 欧美裸体一区二区三区| 欧美日韩在线视频观看| 国产精品网曝门| 国产一区二区三区的电影 | 欧美午夜精品久久久久久久 | 久久精品亚洲国产奇米99| 亚洲欧美日本另类| 久久精品理论片| 亚洲电影免费| 日韩视频专区| 久久精品国产亚洲精品| 欧美大尺度在线| 国产精品一卡二卡| 亚洲精美视频| 亚洲欧美日韩在线高清直播| 久久精品动漫| 亚洲国产精品综合| 午夜精品一区二区三区在线视 | 裸体丰满少妇做受久久99精品| 欧美成人一区二区三区在线观看 | 亚洲最新在线视频| 欧美专区在线观看一区| 欧美精品综合| 国产一区导航| 亚洲一区二区不卡免费| 久久久夜精品| 中文精品一区二区三区| 久热精品视频在线免费观看| 国产精品国产自产拍高清av王其| 红桃视频国产精品| 欧美一区二区三区精品电影| 亚洲国产日韩一区| 久久久久久久久久码影片| 欧美日韩在线电影| 亚洲欧洲精品一区二区三区| 欧美综合二区| 亚洲视频精选| 欧美激情一区二区三区蜜桃视频| 国产一区二区福利| 亚洲午夜精品福利| 亚洲国产高清高潮精品美女| 久久精品91| 国产视频在线一区二区 | 国产永久精品大片wwwapp| 亚洲伦理一区| 亚洲二区在线视频| 蜜臀av一级做a爰片久久| 好吊色欧美一区二区三区视频| 亚洲在线观看免费| 亚洲精品乱码久久久久久黑人| 久久综合九色99| 精品福利av| 久久手机免费观看| 午夜在线精品偷拍| 国产欧美一区二区三区久久| 亚洲欧美精品| 国产精品乱码一区二区三区| 精品动漫3d一区二区三区免费版 | 欧美日韩免费看| 亚洲欧美日韩国产一区二区三区| 欧美亚洲视频在线观看| 亚洲午夜精品17c| 久久综合精品国产一区二区三区| 99国产精品99久久久久久| 亚洲综合第一页| 亚洲日本欧美在线| 久久精品免费看| 久久本道综合色狠狠五月| 欧美四级在线| 一区二区三区视频在线看| 亚洲看片一区| 欧美激情网站在线观看| 欧美国产日韩在线| 在线精品观看| 欧美成人午夜激情在线| 欧美高清视频在线播放| 亚洲精品系列| 欧美日韩无遮挡| 亚洲欧美精品在线| 久久中文字幕导航| 亚洲人成在线免费观看| 欧美日韩视频在线一区二区 | 亚洲天堂免费观看| 国产精品一二三| 久久这里有精品视频| 欧美激情网站在线观看| 久久九九免费视频| 欧美成人免费va影院高清| 亚洲韩日在线| 国产一区二区黄色| 欧美精品久久久久久久| 亚洲女女做受ⅹxx高潮| 久久免费黄色| 一区二区久久久久久| 国产日韩在线视频| 欧美午夜三级| 欧美成人精品一区二区| 午夜欧美大片免费观看| 亚洲黄页视频免费观看| 性亚洲最疯狂xxxx高清| 亚洲毛片av在线| 依依成人综合视频| 国产精品视频九色porn| 欧美激情精品久久久久久大尺度| 性娇小13――14欧美| 一本色道久久综合亚洲精品高清| 久久午夜羞羞影院免费观看| 欧美影院在线| 亚洲欧美精品伊人久久| 日韩一级黄色片| 中文精品视频一区二区在线观看| 亚洲国产高清在线| 亚洲激情网址| 一区二区免费在线播放| 99视频有精品| 亚洲欧美精品| 欧美freesex交免费视频| 美女尤物久久精品| 欧美aⅴ99久久黑人专区| 免费观看成人网| 亚洲黄色成人久久久| 一区二区三区四区五区精品视频| 亚洲午夜成aⅴ人片| 久久国产天堂福利天堂| 欧美成人高清| 国产精品入口夜色视频大尺度| 国产精品海角社区在线观看| 99成人免费视频| 欧美在线播放视频| 欧美精品一区二区三区在线播放 | 亚洲午夜高清视频| 欧美在线|欧美| 亚洲国产免费看| 老司机久久99久久精品播放免费| 麻豆91精品91久久久的内涵| 国产亚洲一区二区在线观看| 日韩亚洲视频在线| 欧美成人影音| 久久综合一区| 亚洲国产成人精品女人久久久| 久久久久国产一区二区三区| 亚洲一区在线观看免费观看电影高清| 免费观看30秒视频久久| 在线成人激情黄色| 久久在线观看视频| 久久精品2019中文字幕| 在线精品国产欧美| 免费国产一区二区| 欧美成人精品| 亚洲视频在线观看视频| 亚洲性线免费观看视频成熟| 国产精品福利久久久| 亚洲中无吗在线| 久久精品成人欧美大片古装| 海角社区69精品视频| 欧美成人久久| 国产精品久久夜| 免费在线观看精品| 国产精品久久久久久影视| 午夜久久资源| 久久久久久久久久久久久女国产乱| 亚洲国产精品久久久久秋霞不卡| 日韩一级精品| 亚洲国产高清一区| 亚洲影院免费观看| 亚洲精品乱码久久久久久按摩观| 亚洲精品国产精品国自产在线 | 欧美激情综合网| 欧美在线免费观看亚洲| 欧美日韩成人在线视频| 老牛嫩草一区二区三区日本| 欧美sm极限捆绑bd| 老司机精品福利视频| 国产精品超碰97尤物18| 欧美成人tv| 国产在线精品一区二区夜色| 亚洲欧洲精品一区二区精品久久久| 国产精品日韩久久久久| 亚洲精品小视频在线观看| 亚洲国产精品久久久久婷婷884 | 欧美大片专区| 欧美一区二区视频观看视频| 久久视频精品在线| 麻豆av福利av久久av| 国产原创一区二区| 欧美亚洲免费电影| 欧美一区91| 黑人极品videos精品欧美裸| 久久久久久久久伊人| 卡一卡二国产精品| 亚洲国产色一区| 欧美日韩黄视频| 午夜亚洲性色视频|