//----------------------------------------------------------------------------- // Computes a matrix given a forward direction //----------------------------------------------------------------------------- void CWeaponIFMSteadyCam::MatrixFromForwardDirection( const Vector &vecForward, matrix3x4_t &mat ) { // Convert desired to quaternion Vector vecLeft( -vecForward.y, vecForward.x, 0.0f ); if ( VectorNormalize( vecLeft ) < 1e-3 ) { vecLeft.Init( 1.0f, 0.0f, 0.0f ); } Vector vecUp; CrossProduct( vecForward, vecLeft, vecUp ); MatrixInitialize( mat, m_vecRelativePosition, vecForward, vecLeft, vecUp ); }
vector<TreeNode*> generateTrees(int start, int end) { vector<TreeNode*> ret; if(start > end) { ret.push_back(NULL); return ret; } for(int i = start; i <= end; ++i) { vector<TreeNode*> vecLeft(generateTrees(start, i - 1)); vector<TreeNode*> vecRight(generateTrees(i + 1, end)); for(int l = 0; l < vecLeft.size(); ++l) for(int r = 0; r < vecRight.size(); ++r) { TreeNode *root = new TreeNode(i); root->left = vecLeft[l]; root->right = vecRight[r]; ret.push_back(root); } } return ret; }