今天看龙书D3D,笔记一下,龙书上绘一个正六面体,改变世界坐标系来令它看起来旋转,然后我自己重写了一遍,再改一改效果,让视口坐标围观这个正六面体的效果。
这样:
下面程序的部分代码:
//里面的变量negative被我注释掉了,如果去掉注释,虚线部分的轨迹也会生效,不过有一个问题,每当到x==a或者x==-a的那个时候,绘图会停顿一下。
D3DXMATRIX viewport; //Set Rotation around Y. static float x = 5.0f,z = 0.0f ; const static float y = 0.0f, a = 5.0f,b = 3.0f;//椭圆标准方程 x^2/a^2+y^2/b^2=1 static bool trenddown = true,//X的坐标减少(true)还是增加(false) negative = true;//Z的坐标仅在正半轴变化(false),还是全轴(true) if (x>=a){ trenddown = true; // negative= !negative; } if (x<=-a){ trenddown = false; // negative = !negative; } if(trenddown) { x-= D3DX_PI/40.0f; } else { x+= D3DX_PI/40.0f; } if(!negative) z=sqrt((1-(x*x) /(a*a))*b*b); else z=-sqrt((1-(x*x) /(a*a))*b*b); D3DXVECTOR3 eye(x,y,z); /* D3DXVECTOR3 lookat(0.0f,0.0f,0.0f); D3DXVECTOR3 up(0.0f,1.0f,0.0f); D3DXMatrixLookAtLH( &viewport,&eye,&lookat,&up ); Device->SetTransform(D3DTS_VIEW,&viewport); */
好,继续。