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


C++ TVec::Dot方法代码示例

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


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

示例1: IntersectSphere

bool CRay::IntersectSphere( const TVec &roPos, float fRadius )
{
	const TVec oVecV( m_oPos - roPos );
	const float fVh2 = oVecV.Dot( oVecV );
	
	// Mitternacht.
	const float fA = m_oDir.Dot( m_oDir );
	const float fB = 2.0f * oVecV.Dot( m_oDir );
	const float fC = fVh2 - fRadius * fRadius;
	
	const float fDet = ( fB * fB ) - ( 4.0f * fA * fC );
	
	if( fDet >= 0.0f )
	{
		const float f1dA2 = 1.0f / ( 2.0f * fA );
		const float fDetTerm = (float)sqrt( (double)fDet );
		const float fT0 = ( -fB + fDetTerm ) * f1dA2;
		const float fT1 = ( -fB - fDetTerm ) * f1dA2;
		
		float fT = MAX( fT0, fT1 );
		if( fT < 0.0f ) // Der Strahl ist eine Halbgerade!
			return false;
		m_oHit = Eval( fT );
		TVec oNormal = ( m_oHit - m_oPos ).Normalized();
		// Nur wenn Strahl mit der nach aussen gerichteten 
		// Normalen max. einen Winkel von 90° bildet.
		if( oNormal.Dot( m_oDir ) >= 0.0f ) 
			return true;
	}
	return false;
}
开发者ID:0rel,项目名称:okkuplektor,代码行数:31,代码来源:Ray.cpp


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