コード例 #1
0
ファイル: Octree.cpp プロジェクト: GuoYanlin/3d-workspace
void Octree::initBuild( StdList<BaseTriangle*>& tris, int triPerNode )
{
	// add triangles involved to "triangleData"
	this->triangleData = LIST_TO_VECTOR(tris);
	this->trianglePerNode = triPerNode;

	// Create a big box
	BoundingBox bb;
	bb.computeFromTris(triangleData);

	// Transform and scale to node's coordinates
	double largeSize = Max(bb.xExtent, Max(bb.yExtent, bb.zExtent));

	// Define our bounding box
	this->boundingBox = BoundingBox(bb.center, largeSize, largeSize, largeSize);

	// Build the tree
	this->build();

	// Connect children with parent
	std::stack<Octree*> childStack;
	childStack.push(this);
	while(!childStack.empty())
	{
		Octree * curr = childStack.top(); childStack.pop();

		for(int i = 0; i < (int) curr->children.size(); i++)
		{
			curr->children[i].parent = curr;

			childStack.push(&curr->children[i]);
		}
	}
}
コード例 #2
0
ファイル: Octree.cpp プロジェクト: GuoYanlin/3d-workspace
void Octree::init( int triPerNode )
{
	this->trianglePerNode = triPerNode;

	BoundingBox bb;
	bb.computeFromTris(triangleData);

	//Transform and scale to node's coordinates
	double largeSize = Max(bb.xExtent, Max(bb.yExtent, bb.zExtent));

	this->boundingBox = BoundingBox(bb.center, largeSize, largeSize, largeSize);

	parent = NULL;
}