|
|
rt
在矩阵变换点坐标的时候,是不是用 “新的点坐标向量=原来的点坐标向量*变换矩阵” 就可以了呢?如果是这样的原理的话,那么我的程序中就是这么弄的,但三角形始终不转啊,不知道为什么呢?下面是有关的代码,是凭着这个想法写的,并没有用世界矩阵的方法去变换。
CUSTOMVERTEX vertices[] =
{
{ 0.0f, 1.0f, 0.5f, D3DCOLOR_XRGB(255,0,0), }, // x, y, z, color
{ 0.5f, 0.0f, 0.5f, D3DCOLOR_XRGB(255,0,0), },
{ -0.5f, 0.0f, 0.5f, D3DCOLOR_XRGB(255,0,0), },
};
D3DXMATRIX mat;
UINT iTime = timeGetTime() % 1000;
FLOAT fAngle = iTime * (2.0f * D3DX_PI) / 1000.0f;
D3DXMatrixRotationZ( &mat, fAngle );
VOID* pVertices;
D3DXVECTOR3 vect1(vertices[0].x, vertices[0].y, vertices[0].z);
D3DXVECTOR3 vect2(vertices[1].x, vertices[1].y, vertices[1].z);
D3DXVECTOR3 vect3(vertices[2].x, vertices[2].y, vertices[2].z);
D3DXMatrixMultiply( &(D3DXMATRIX)vect1, &(D3DXMATRIX)vect1, &mat );
D3DXMatrixMultiply( &(D3DXMATRIX)vect2, &(D3DXMATRIX)vect2, &mat );
D3DXMatrixMultiply( &(D3DXMATRIX)vect3, &(D3DXMATRIX)vect3, &mat );
vertices[0].x = vect1.x;
vertices[0].y = vect1.y;
vertices[0].z = vect1.z;
vertices[1].x = vect2.x;
vertices[1].y = vect2.y;
vertices[1].z = vect2.z;
vertices[2].x = vect3.x;
vertices[2].y = vect3.y;
vertices[2].z = vect3.z;
我都哭死了,没办法转起来啊
[em17] [em17] [em17] [em17] [em17] |
|