当前位置: 首页>>代码示例>>C++>>正文


C++ ListNode::getObject方法代码示例

本文整理汇总了C++中ListNode::getObject方法的典型用法代码示例。如果您正苦于以下问题:C++ ListNode::getObject方法的具体用法?C++ ListNode::getObject怎么用?C++ ListNode::getObject使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在ListNode的用法示例。


在下文中一共展示了ListNode::getObject方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: remove

bool List::remove(Object* const object)
{
	bool objectFound = false;

	ListNode* temp = this->first; 
	ListNode* prev = NULL;
	ListNode* next = NULL;

	while( temp != NULL ) {
		if (object == temp->getObject()) {
			next = temp->getNext();
			delete temp;
			if(next == NULL)
				last = NULL;
			if(prev == NULL)
				first = next;
			else
				prev->setNext(next);
			objectFound = true;
			break;
		}
		prev = temp;
		temp = temp->getNext();
	}
	return objectFound;
}
开发者ID:tomasz-kucharski,项目名称:robocode,代码行数:26,代码来源:List.cpp

示例2: getNext

Object* List::getNext()
{
	if(actual != NULL ) {
		ListNode* temp = actual;
		actual = actual->getNext();
		return temp->getObject();
	}
	else
		return NULL;
}
开发者ID:tomasz-kucharski,项目名称:robocode,代码行数:10,代码来源:List.cpp

示例3: KeyValue

/*---------------------------------------------------------------------*//**
	コピー
**//*---------------------------------------------------------------------*/
void ProgMatter::Setting::copy(const Setting* s)
{
	// _listParams のコピー
	{
		_listParams->removeAll();
		ListNode<KeyValue*>* lnode = s->_listParams->getHeadNode();
		while(lnode != 0L)
		{
			_listParams->addTail(new KeyValue(*lnode->getObject()));
			lnode = lnode->getNext();
		}
	}
}
开发者ID:Altoterras,项目名称:TheHeartOfSourcerer,代码行数:16,代码来源:ProgMatter.cpp

示例4: subdivide

void KdTree::subdivide( KdTreeNode* a_Node, Box& a_Box, int depth, int obs )
{
	//将宽度最大的轴向作为切割轴向
	Vec3 s = a_Box.getSize();
	if ((s.x >= s.y) && (s.x >= s.z))
		a_Node->setAxis( 0 );
	else if ((s.y >= s.x) && (s.y >= s.z))
		a_Node->setAxis( 1 );
	else
		a_Node->setAxis( 2 );
	int axis = a_Node->getAxis();

	double* splitPos_ = new double[obs*3+100];
	double* splitPos = new double[obs*3+100];
	int split = 0;
	int split_ = 0; 

	double* llist = new double[obs];
	double* rlist = new double[obs];
	ListNode* list = a_Node->getList();
	for( int i = 0; i < obs; i++)
	{
		llist[i] = list->getObject()->getMin(axis);
		rlist[i] = list->getObject()->getMax(axis);
		Object* ob = list->getObject();
		if( ob->getType() == Object::TRIANGLE)
		{
			for(int j = 0;j < 3;j++)
				splitPos_[split_++] = ( (Triangle*)ob )->getVertex(j)->getPos().cell[axis];//  分割线可能超过外盒
		}
		else
		{
			splitPos_[split_++] = ob->getMin(axis);
			splitPos_[split_++] = ob->getMax(axis);
		}
		list = list->getNext();
	}

	std::sort(llist, llist+obs);
	std::sort(rlist, rlist+obs);
	std::sort(splitPos_, splitPos_ + split_);
	double lastsplit = -10000;
	for(int i = 0; i < split_; i++)
	{
		if(lastsplit != splitPos_[i])
		{
			splitPos[split++] = splitPos_[i];
			lastsplit = splitPos_[i];
		}
	}

	// 当前节点盒子总面积的倒数
	double SAV = 0.5 / (a_Box.w() * a_Box.d() + a_Box.w() * a_Box.h() + a_Box.d() * a_Box.h());
	// 当前节点的cost
	double Cleaf = obs * 1.0;

	double lowcost = 10000000;
	double bestpos = 0;
	int n1, n2;
	int L = 0, R = 0;

	double pos1 = a_Box.getPos().cell[axis];
	double pos2 = a_Box.getSize().cell[axis] + a_Box.getPos().cell[axis];
	Box b1, b2, b3 = a_Box, b4 = a_Box;
	for( int i = 0; i < split; i++)
	{
		n1 = 0;
		n2 = 0;
		while(llist[L] <= splitPos[i] && L < obs) L++;
		while(rlist[R] < splitPos[i] && R < obs) R++;
		if( L ==0 )
			continue;
		else
			n1 = L;
		if( R > obs)
			continue;
		else
			n2 = obs - R; 

			// b3为左盒,b4为右盒
			b4.getPos().cell[axis] = splitPos[i];
			b4.getSize().cell[axis] = pos2 - splitPos[i];
			b3.getSize().cell[axis] = splitPos[i] - pos1;
			// 计算分割后的cost
			double SA1 = 2 * (b3.w() * b3.d() + b3.w() * b3.h() + b3.d() * b3.h());		//左盒子表面积
			double SA2 = 2 * (b4.w() * b4.d() + b4.w() * b4.h() + b4.d() * b4.h());		//右盒子表面积
			double splitcost = 0.3 + 1.0 * (SA1 * SAV * n1 + SA2 * SAV * n2 );
			// 更新最佳cost
			if (splitcost < lowcost)
			{
				lowcost = splitcost;
				bestpos = splitPos[i];
				b1 = b3, b2 = b4;
			}
	}	
	if (lowcost > Cleaf)	//若分割后不如分割前的cost小,则结束分割
		return;

	a_Node->setSplitPos( bestpos );
	// 建立左右孩子节点
//.........这里部分代码省略.........
开发者ID:sola777,项目名称:RayTrace,代码行数:101,代码来源:Kdtree.cpp


注:本文中的ListNode::getObject方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。