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


C++ Matrix4::IsRotation方法代码示例

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


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

示例1: FromRotationMatrix

void Quaternion::FromRotationMatrix( const Matrix4& m )
{
	GLASSERT( m.IsRotation() );

    float trace = m.x[0] + m.x[5] + m.x[10];
	const int next[3] = { 1, 2, 0 };

    if ( trace > 0.0f )
    {
		float s = (float)sqrt(trace + 1.0f);
		w = s / 2.0f;
		s = 0.5f / s;
		
		x = ( m.x[9] - m.x[6] ) * s;
		y = ( m.x[2] - m.x[8] ) * s;
		z = ( m.x[4] - m.x[1] ) * s;
	}
	else
	{
		int i=0;

		if (m.x[5]  > m.x[0])		i = 1;
		if (m.x[10] > m.x[i*4+i])	i = 2;
    
		int j = next[i];
		int k = next[j];

		float s = (float) sqrt ((m.x[i*4+i] - (m.x[j*4+j] + m.x[k*4+k])) + 1.0f);
      
		float q[4];
		q[i] = s * 0.5f;

		if (s != 0.0f) s = 0.5f / s;

		q[3] = (m.x[k*4+j] - m.x[j*4+k]) * s;
		q[j] = (m.x[j*4+i] + m.x[i*4+j]) * s;
		q[k] = (m.x[k*4+i] + m.x[i*4+k]) * s;

		x = q[0];
		y = q[1];
		z = q[2];
		w = q[3];
	}
	GLASSERT( Equal( 1.0f, x*x + y*y + z*z + w*w, 0.0001f ) );
}
开发者ID:gefariasjr,项目名称:projetofinal1,代码行数:45,代码来源:glgeometry.cpp

示例2: SetPosV

void StaticMesh::SetPosV( const Vector3F& _newLoc, const Matrix4& newRot )
{
	Vector3F newPos = _newLoc;
	GLASSERT( newRot.IsRotation() );

	if ( AttachedToTerrain() ) {
		newPos.z = Lilith3D::Instance()->GetTerrainMesh()->CalcHeight( newPos.x, newPos.y, 0, 0 );
	}

	if ( Pos() != newPos || newRot != rotation || !InList() )
	{
		// If in the container, remove it from the container.
		if ( InList() ) {
			ListRemove();
		}
		
		pos = newPos;
		rotation = newRot;

		ComputeTransform();
		CalcAABB( staticResource->AABB() );		
		Lilith3D::Instance()->GetQuadTree()->AddMesh( this );
	}
}
开发者ID:gefariasjr,项目名称:projetofinal1,代码行数:24,代码来源:mesh.cpp


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