Показать сообщение отдельно
Старый 24.06.2011, 04:56   #13
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Перемещения в 3d пространстве.

Возможно так тогда (но синтаксис точный не воспроизведу, не пишу на С++ и на DX ):
bool cWorldMatrix::Move(float x,float y,float z)
{
   
D3DXVECTOR3 up = new D3DXVECTOR3 (0,1,0);
   
D3DXVECTOR3 right = new D3DXVECTOR3 (1,0,0);
   
D3DXVECTOR3 forward = new D3DXVECTOR3 (0,0,1);

   
D3DXMATRIX  matrix;
   
D3DXMatrixRotationYawPitchRoll(&matrixayaxaz);

   
D3DXVECTOR4  thisUp;
   
D3DXVECTOR4  thisRight;
   
D3DXVECTOR4  thisForward;

   
D3DXVec3Transform(&thisUp, &up, &matrix);
   
D3DXVec3Transform(&thisRight, &right, &matrix);
   
D3DXVec3Transform(&thisForward, &forward, &matrix);

   
D3DXVec4Normalize(&thisUp, &thisUp);
   
D3DXVec4Normalize(&thisRight, &thisRight);
   
D3DXVec4Normalize(&thisForward, &thisForward); 
   
D3DXVECTOR4  resultMove =  thisUp thisRight thisForward z;

   
px+= resultMove.x;
   
py+= resultMove.y;
   
pz+= resultMove.z;
   return 
TRUE;


UPD по примеру от HolyDel:

bool cWorldMatrix::Move(float x,float y,float z)
{
   
D3DXMATRIX  matrix;
   
D3DXMatrixRotationYawPitchRoll(&matrixayaxaz);
   
D3DXVECTOR3  localMove = new D3DXVECTOR3 (x,y,z);
   
D3DXVECTOR4  resultMove;

   
D3DXVec3Transform(&resultMove, &localMove , &matrix);

   
px+= resultMove.x;
   
py+= resultMove.y;
   
pz+= resultMove.z;
   return 
TRUE;

__________________
Blitz3d to Unity Wiki

Последний раз редактировалось pax, 24.06.2011 в 15:13.
(Offline)
 
Ответить с цитированием