コード例 #1
0
//-----------------------------------------------------------------------------
// 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 );
}
コード例 #2
0
	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;
	}