⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 d3d9.cpp

📁 用matlab实现3D骨架提取的抽取基本点集算法
💻 CPP
字号:
//2008 - Marcelo Archanjo - marcelo_archanjo@yahoo.com.br - this source code is under General Public License.

#include "D3D9.h"

void SetupMatrices(IDirect3DDevice9* pd3dDevice)
{
	//World Matrix e uma matriz Identidentidade
	montaMatrizIdentidade(matWorld);
	//View Matrix
	montaViewMatrizTurbo();
		 	
   //Projection Matrix
	float fAspectRatio = (float)height/(float)width ;
	SetProjectionMatrix( matProj, (float)0.78539, fAspectRatio, 0.1f, 6000.0f );//o ultimo parametro define a profundidade do campo visual
	//0.78539 pi/4
    pd3dDevice->SetTransform( D3DTS_WORLD,      &matWorld );
    pd3dDevice->SetTransform( D3DTS_VIEW,       &matView );
    pd3dDevice->SetTransform( D3DTS_PROJECTION, &matProj );

 }



void montaViewMatrizTurbo(void)
	{
	D3DMATRIX matTemp,matRot;
	// ******* Translacao *********
	montaMatrizIdentidade(matView);
	matView._41=-p.x;//mudei em rela玢o ao NovoMundo DX8 aqui era usado cam ao inv閟 de p
	matView._42=-p.y;
	matView._43=-p.z;

//o	matView._41=-cam.x;
//o	matView._42=-cam.y;
//o	matView._43=-cam.z;
	// ******** "Calculos" *********
	calcSenCoss(&senX,&cosX,&p.indiceSpinX);
	calcSenCoss(&senY,&cosY,&p.indiceSpinY);
	calcSenCoss(&senZ,&cosZ,&p.indiceSpinZ);


	// ****************************
	montaMatrizIdentidade(matTemp);
	// ****** Rotacao em X ********
	montaMatrizIdentidade(matRot);
	matRot._22 =  cosX;
    matRot._23 =  senX;
    matRot._32 = -senX;
    matRot._33 =  cosX;
	MatrixMultiply(matTemp,matTemp,matRot);
	//*****************************

	// ****** Rotacao em Y ********
	montaMatrizIdentidade(matRot);
	matRot._11 =  cosY;
    matRot._13 =-senY;
    matRot._31 =senY;
    matRot._33 =  cosY;
	MatrixMultiply(matTemp,matTemp,matRot);
	//*****************************

	// ****** Rotacao em Z ********
	montaMatrizIdentidade(matRot);
	matRot._11  =  cosZ;
    matRot._12  =senZ;//  senZ;mudei o sentido para ficar como se fosse regra da mao direita
    matRot._21  =-senZ;// -senZ;mudei o sentido para ficar como se fosse regra da mao direita
    matRot._22  =  cosZ;
	MatrixMultiply(matTemp,matTemp,matRot);
	//*****************************
	//MatrixMultiply(matView,matView,matTemp);//gira os objetos em relacao ao centro global
	MatrixMultiply(matView,matTemp,matView);//gira os objetos em relacao ao observador
	}

//porque nao vale o que fiz com as matrizes? , tenho a sensa玢o de que 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -