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


C++ btTransform::getBasis方法代码示例

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


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

示例1: getWorldTransform

void bmodMotionState::getWorldTransform(btTransform &worldTrans) const {
	if(obj->getEntities()->size() == 0) {
		worldTrans = btTransform(btQuaternion(0, 0, 0, 1));
		return;
	}

	edict_t * entity = INDEXENT(obj->getEntities()->front());

	worldTrans = btTransform(btQuaternion(0, 0, 0, 1), btVector3(entity->v.origin.x, entity->v.origin.y, entity->v.origin.z));
	btVector3 angles;
	entity->v.angles.CopyToArray(angles.m_floats);
	EulerMatrix(angles, worldTrans.getBasis());
}
开发者ID:Solexid,项目名称:BMOD,代码行数:13,代码来源:object.cpp

示例2: InverseTransformPoint3x3

void InverseTransformPoint3x3(btVector3& out, const btVector3& in, const btTransform& tr)
{
	const btMatrix3x3& rot = tr.getBasis();
	const btVector3& r0 = rot[0];
	const btVector3& r1 = rot[1];
	const btVector3& r2 = rot[2];

	const btScalar x = r0.x()*in.x() + r1.x()*in.y() + r2.x()*in.z();
	const btScalar y = r0.y()*in.x() + r1.y()*in.y() + r2.y()*in.z();
	const btScalar z = r0.z()*in.x() + r1.z()*in.y() + r2.z()*in.z();

	out.setValue(x, y, z);
}
开发者ID:Nuos,项目名称:crawler,代码行数:13,代码来源:btPolyhedralContactClipping.cpp

示例3: transformToNode

QDomElement SimDomElement::transformToNode(QDomDocument &doc, const btTransform t)
{
	QDomElement trans = doc.createElement( "transform" );
	
	QDomElement origin = doc.createElement( "origin" );
	origin.appendChild(vectorToNode(doc, t.getOrigin()));
	trans.appendChild(origin);
	
	QDomElement rotate = doc.createElement( "rotation" );
	rotate.appendChild(basisToNode(doc, t.getBasis()));
	trans.appendChild(rotate);
	return trans;
}
开发者ID:jsj2008,项目名称:roverSim,代码行数:13,代码来源:SimDomElement.cpp

示例4:

ork::CMatrix4 btmtx4toorkmtx4( const btTransform& mtx )
{	ork::CMatrix4 rval;
	ork::CVector3 position = ! mtx.getOrigin();
	rval.SetTranslation( position );
	const btMatrix3x3& mtx33 = mtx.getBasis();
	for( int i=0; i<3; i++ )
	{	const btVector3& vec = mtx33.getColumn(i);
		rval.SetElemXY(i,0,float(vec.x()));
		rval.SetElemXY(i,1,float(vec.y()));
		rval.SetElemXY(i,2,float(vec.z()));
	}
	return rval;
}
开发者ID:andemi02,项目名称:orkid,代码行数:13,代码来源:bullet.cpp

示例5: ConvertBTMatrix

D3DXMATRIX BulletPhysics::ConvertBTMatrix( btTransform &trn ) 
{
	//do crazy math shit
	btVector3 R = trn.getBasis().getColumn(0);
	btVector3 U = trn.getBasis().getColumn(1);
	btVector3 L = trn.getBasis().getColumn(2);
	btVector3 P = trn.getOrigin();

	D3DXVECTOR3 vR, vU, vL, vP;
	vR.x = R.x();vR.y = R.y();vR.z = R.z();
	vU.x = U.x();vU.y = U.y();vU.z = U.z();
	vL.x = L.x();vL.y = L.y();vL.z = L.z();
	vP.x = P.x();vP.y = P.y();vP.z = P.z();

	D3DXMATRIX matOutput;
	matOutput._11 = vR.x;matOutput._12 = vR.y;matOutput._13 = vR.z;matOutput._14 = 0.f;
	matOutput._21 = vU.x;matOutput._22 = vU.y;matOutput._23 = vU.z;matOutput._24 = 0.f;
	matOutput._31 = vL.x;matOutput._32 = vL.y;matOutput._33 = vL.z;matOutput._34 = 0.f;
	matOutput._41 = vP.x;matOutput._42 = vP.y;matOutput._43 = vP.z;matOutput._44 = 1.f;

	return matOutput;
}
开发者ID:NyaChan,项目名称:animiku,代码行数:22,代码来源:AM_BulletPhysics.cpp

示例6: getContactNormal

btVector3 tgBulletSpringCableAnchor::getContactNormal() const
{

#ifdef USE_BASIS
	const btTransform tr = attachedBody->getWorldTransform();
    btVector3 newNormal = (tr.getBasis() * contactNormal);
    newNormal = newNormal.length() > 0.0 ? newNormal.normalize() : btVector3(0.0, 0.0, 0.0);
    //assert(newNormal.length() == 1.0);
    return newNormal;
#else
	return contactNormal;
#endif

}
开发者ID:MrMoose,项目名称:NTRTsim,代码行数:14,代码来源:tgBulletSpringCableAnchor.cpp

示例7:

inline
minko::math::mat4
minko::math::fromBulletTransform(const btTransform& transform)
{
    auto basis = transform.getBasis();
    auto translation = transform.getOrigin();

    return minko::math::mat4(
        basis[0][0], basis[1][0], basis[2][0], 0.f,
        basis[0][1], basis[1][1], basis[2][1], 0.f,
        basis[0][2], basis[1][2], basis[2][2], 0.f,
        translation[0], translation[1], translation[2], 1.f
    );
}
开发者ID:382309009,项目名称:minko,代码行数:14,代码来源:tools.hpp

示例8: getAabb

void btTriangleMeshShape::getAabb(const btTransform& trans,btVector3& aabbMin,btVector3& aabbMax) const
{

	btVector3 localHalfExtents = btScalar(0.5)*(m_localAabbMax-m_localAabbMin);
	localHalfExtents += btVector3(getMargin(),getMargin(),getMargin());
	btVector3 localCenter = btScalar(0.5)*(m_localAabbMax+m_localAabbMin);

	btMatrix3x3 abs_b = trans.getBasis().absolute();

	btVector3 center = trans(localCenter);

	btVector3 extent = localHalfExtents.dot3(abs_b[0], abs_b[1], abs_b[2]);
	aabbMin = center - extent;
	aabbMax = center + extent;
}
开发者ID:g-pechorin,项目名称:bullet2stripped,代码行数:15,代码来源:btTriangleMeshShape.cpp

示例9: getAabb

void btHeightfieldTerrainShape::getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const
{
	btVector3 halfExtents = (m_localAabbMax-m_localAabbMin)* m_localScaling * btScalar(0.5);

	btVector3 localOrigin(0, 0, 0);
	localOrigin[m_upAxis] = (m_minHeight + m_maxHeight) * btScalar(0.5);
	localOrigin *= m_localScaling;

	btMatrix3x3 abs_b = t.getBasis().absolute();  
	btVector3 center = t.getOrigin();
    btVector3 extent = halfExtents.dot3(abs_b[0], abs_b[1], abs_b[2]);
	extent += btVector3(getMargin(),getMargin(),getMargin());

	aabbMin = center - extent;
	aabbMax = center + extent;
}
开发者ID:joyfish,项目名称:GameThirdPartyLibs,代码行数:16,代码来源:btHeightfieldTerrainShape.cpp

示例10: getAabb

void btBoxShape::getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const
{
	btVector3 halfExtents = getHalfExtents();

	btMatrix3x3 abs_b = t.getBasis().absolute();  
	btPoint3 center = t.getOrigin();
	btVector3 extent = btVector3(abs_b[0].dot(halfExtents),
		   abs_b[1].dot(halfExtents),
		  abs_b[2].dot(halfExtents));
	extent += btVector3(getMargin(),getMargin(),getMargin());

	aabbMin = center - extent;
	aabbMax = center + extent;


}
开发者ID:gitrider,项目名称:wxsj2,代码行数:16,代码来源:btBoxShape.cpp

示例11: project

void btConvexShape::project(const btTransform& trans, const btVector3& dir, btScalar& min, btScalar& max) const
{
	btVector3 localAxis = dir*trans.getBasis();
	btVector3 vtx1 = trans(localGetSupportingVertex(localAxis));
	btVector3 vtx2 = trans(localGetSupportingVertex(-localAxis));

	min = vtx1.dot(dir);
	max = vtx2.dot(dir);

	if(min>max)
	{
		btScalar tmp = min;
		min = max;
		max = tmp;
	}
}
开发者ID:JinMyong,项目名称:Game_MatchEmUp,代码行数:16,代码来源:btConvexShape.cpp

示例12: setWorldTransform

void SimpleDynamicSceneObject::setWorldTransform(const btTransform& trans)
{
#if 1
	btVector3 btComOffset(comOffset.getX(), comOffset.getY(), comOffset.getZ());
	btComOffset = trans.getBasis() * btComOffset;

	btTransform comTrans(trans.getRotation(), trans.getOrigin() + btComOffset);
#else
	btTransform comTrans(trans);
#endif

	// +com

	RigidBodySceneObject::setWorldTransform(comTrans);

}
开发者ID:alemariusnexus,项目名称:gtatools,代码行数:16,代码来源:SimpleDynamicSceneObject.cpp

示例13: print_btTransform

/**\fn void print_btTransform(btTransform xf)
 * \brief print a btTransform object
 * \param xf - a btTransform object to print
 * \return void
 *  \ingroup Kinematics
 */
void print_btTransform(btTransform xf)
{
	btMatrix3x3 rr = xf.getBasis();
	btVector3 vv = xf.getOrigin();
	std::stringstream ss;

	cout << fixed;
	for (int i=0; i<3; i++)
	{
		for (int j=0; j<3; j++)
			ss << rr[i][j] << "\t ";
		ss << vv[i] << endl;
	}
	ss << "0\t 0\t 0\t 1\n";
	log_msg("\n%s", ss.str().c_str());
}
开发者ID:Ghalko,项目名称:raven2,代码行数:22,代码来源:r2_kinematics.cpp

示例14: fromBt

inline mat4x4 fromBt(const btTransform& a)
{
	mat4x4 r;
	const btMatrix3x3& basis = a.getBasis();
	for(int i = 0; i < 3; ++i)
	{
		for(int j = 0; j < 3; ++j)
			r(j, i) = basis[i][j];
		r(3, i) = 0;
	}
	const btVector3& origin = a.getOrigin();
	r(0, 3) = origin.x();
	r(1, 3) = origin.y();
	r(2, 3) = origin.z();
	r(3, 3) = 1;
	return r;
}
开发者ID:quyse,项目名称:inanity,代码行数:17,代码来源:bt.hpp

示例15: reportHit

					virtual btScalar reportHit(const btVector3& hitNormalLocal, btScalar hitFraction, int partId, int triangleIndex )
					{
						btCollisionWorld::LocalShapeInfo	shapeInfo;
						shapeInfo.m_shapePart = partId;
						shapeInfo.m_triangleIndex = triangleIndex;

						btVector3 hitNormalWorld = m_colObjWorldTransform.getBasis() * hitNormalLocal;

						btCollisionWorld::LocalRayResult rayResult
							(m_collisionObject,
							&shapeInfo,
							hitNormalWorld,
							hitFraction);

						bool	normalInWorldSpace = true;
						return m_resultCallback->addSingleResult(rayResult,normalInWorldSpace);
					}
开发者ID:3DGEOM,项目名称:Blender,代码行数:17,代码来源:btCollisionWorld.cpp


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