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


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

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


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

示例1:

        bool	RayCastTriangle(const Float3&	vStart,const Float3& vDir,const Float3& v0,const Float3& v1,const Float3& v2,float& fMaxDistance)
        {
            Float3	edge1	=	v1	-	v0;
            Float3	edge2	=	v2	-	v0;

            Float3	pvec	=	vDir.Cross(edge2);

            float det =  edge1.Dot( pvec );

            float u, v, t;

            Float3 tvec;

            if(det	>	0){
                tvec	=	vStart	-	v0;
            }else{
                tvec	=	v0	-	vStart;
                det		=	-det;
            }

            u	=	tvec.Dot(pvec);
            if(u<0.0f||u>det)
                return	false;
            Float3	qvec	=	tvec.Cross(edge1);
            v	=	vDir.Dot(qvec);
            if(v<0.0f||u+v>det)
                return	false;
            t	=	edge2.Dot(qvec)/det;
            if(t<0.0f||t>fMaxDistance)
                return	false;
            fMaxDistance	=	t;
            //nor	=	cross(edge1,edge2);
            return	true;
        };
开发者ID:ingeyu,项目名称:airengine,代码行数:34,代码来源:AirHelperRenderable.cpp

示例2: Update

        void Actor::Update( const FrameTime& frameTime )
        {
            float fDot =	acos(m_vFaceDir.Dot(Float3(0,0,1)));
            //Float3 vAxis	=	Float3(0,0,1).Cross(vDir).Normalize();

            if(m_vFaceDir.x < 0){
                fDot*=-1;
            }
            m_pNode->SetQuat(Float4(Float3(0,1,0),fDot));
                
            if(m_uiLowBodyBoneIndex!=0xffffffff){
                if(m_vMoveDir.Length()	<	0.5){
                    m_pModel->DisableBoneExtraRotate(m_uiLowBodyBoneIndex);
                }else{

                    Float3 vNewMoveDir	=	m_vMoveDir;

                    float fRun	=	vNewMoveDir.Dot(m_vFaceDir);
                    if(fRun	<0){
                        vNewMoveDir*=-1;//m_pModel->EnableBoneExtraRotate(uiIndex,Float4(Float3(0,0,-1),fFootDot));
                    }

                    float	fFootAngle	=	acos(vNewMoveDir.Dot(m_vFaceDir));
                    if(fFootAngle	< 0.00001f){
                        m_pModel->EnableBoneExtraRotate(m_uiLowBodyBoneIndex,Float4(Float3(0,0,1),0));
                    }else{
                        Float3 vAxis		=	m_vFaceDir.Cross(vNewMoveDir).Normalize();
                        m_pModel->EnableBoneExtraRotate(m_uiLowBodyBoneIndex,Float4(Float3(0,0,vAxis.y),-fFootAngle));
                    }

                }
            }

            //UpdateSkill
            U32 uiSkillCount	=	m_vecSkill.size();
            for(U32 i=0;i<uiSkillCount;i++){
                Skill* pSkill	=	m_vecSkill[i];
                if(pSkill!=NULL){
                    pSkill->Update(frameTime,this);
                }
            }
            Move(frameTime.fTimeDelta);
        }
开发者ID:ingeyu,项目名称:airengine,代码行数:43,代码来源:AirGameActor.cpp


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