怎样得到矩阵的数组
我有一个很简单的类,代码在下面,我希望从它的实例得到一个含有15个矩阵的数组。我知道不能直接得到数组,只能得到指针,遇到麻烦了。请过路侠客拔刀相助,谢谢!
我就是想使用GetLCVMList()函数得到我要的数组的指针。
如果代码这样写:
class CMatrix{public: CMatrix() { D3DXMatrixIdentity( &m_LCPM ) ; m_Position[0] = m_Position[1] = m_Position[2] = D3DXVECTOR3( 0.f ,0.f,0.f) ; for ( int i = 0 ; i < 3 ; i ++ ) D3DXMatrixIdentity( &m_LCVMList[i] ) ; } ; ~CMatrix() {} ; void SetPosition( D3DXVECTOR3 Position[3] ) { for ( int i = 0 ; i < 3 ; i ++ ) m_Position[i] = Position[i] ; UpdateLCVM() ; }; void UpdateLCVM () { D3DXVECTOR3 Di[5] = { D3DXVECTOR3( 0.f , -1.f , 0.f) ,D3DXVECTOR3( 1.f , 0.f , 0.f) ,D3DXVECTOR3( -1.f , 0.f , 0.f) ,D3DXVECTOR3( 0.f , 0.f , 1.f) ,D3DXVECTOR3( 0.f , 0.f , -1.f) } ; D3DXVECTOR3 Up( 0.01f , 1.f , 0.01f ) ; for ( int i = 0 ; i < 3 ; i ++ ) { for ( int j = 0 ; j < 5 ; j ++ ) { D3DXVECTOR3 At = m_Position[i] + Di[j] ; D3DXMatrixLookAtLH( &m_LCVMList[5*i+j] , &m_Position[i] ,&At ,&Up ) ; } } }; D3DXMATRIX* GetLCPM() { D3DXMatrixPerspectiveFovLH( &m_LCPM, D3DX_PI/2, 1.f, 0.1f, 20.f ); return &m_LCPM ; } ; D3DXMATRIX* GetLCVMList() { return m_LCVMList ; } ;private: D3DXMATRIX m_LCPM ,m_LCVMList[15] ; D3DXVECTOR3 m_Position[3] ;};class CMatrix{public: CMatrix() { D3DXMatrixIdentity( &m_LCPM ) ; m_Position[0] = m_Position[1] = m_Position[2] = D3DXVECTOR3( 0.f ,0.f,0.f) ; for ( int i = 0 ; i < 3 ; i ++ ) D3DXMatrixIdentity( m_pLCVMList[i] ) ; } ; ~CMatrix() {} ; void SetPosition( D3DXVECTOR3 Position[3] ) { for ( int i = 0 ; i < 3 ; i ++ ) m_Position[i] = Position[i] ; UpdateLCVM() ; }; void UpdateLCVM () { D3DXVECTOR3 Di[5] = { D3DXVECTOR3( 0.f , -1.f , 0.f) ,D3DXVECTOR3( 1.f , 0.f , 0.f) ,D3DXVECTOR3( -1.f , 0.f , 0.f) ,D3DXVECTOR3( 0.f , 0.f , 1.f) ,D3DXVECTOR3( 0.f , 0.f , -1.f) } ; D3DXVECTOR3 Up( 0.01f , 1.f , 0.01f ) ; for ( int i = 0 ; i < 3 ; i ++ ) { for ( int j = 0 ; j < 5 ; j ++ ) { D3DXVECTOR3 At = m_Position[i] + Di[j] ; D3DXMatrixLookAtLH( m_pLCVMList[5*i+j] , &m_Position[i] ,&At ,&Up ) ; }//?????????????????????????????? } }; D3DXMATRIX* GetLCPM() { D3DXMatrixPerspectiveFovLH( &m_LCPM, D3DX_PI/2, 1.f, 0.1f, 20.f ); return &m_LCPM ; } ; D3DXMATRIX** GetLCVMList() { return m_pLCVMList ; } ;private: D3DXMATRIX m_LCPM ,*m_pLCVMList[15] ; D3DXVECTOR3 m_Position[3] ;};