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


C++ CollisionMesh::GetShape方法代码示例

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


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

示例1: SolveObjectCollision

void CollisionSolver::SolveObjectCollision(CollisionMesh& particle,
                                           const CollisionMesh& object)
{
    if(particle.IsDynamic())
    {
        if(object.GetShape() == Geometry::SPHERE)
        {
            SolveParticleSphereCollision(particle, object);
        }
        else
        {
            SolveParticleHullCollision(particle, object);
        }
    }
}
开发者ID:huaminglee,项目名称:cloth-simulator,代码行数:15,代码来源:collisionsolver.cpp

示例2: SolveParticleSphereCollision

void CollisionSolver::SolveParticleSphereCollision(CollisionMesh& particle,
                                                   const CollisionMesh& sphere)
{
    D3DXVECTOR3 sphereToParticle = particle.GetPosition() - sphere.GetPosition();
    const float lengthSqr = D3DXVec3LengthSq(&sphereToParticle);
    const float combinedRadius = sphere.GetRadius() + particle.GetRadius();

    if (lengthSqr < (combinedRadius*combinedRadius))
    {
        const float length = std::sqrt(lengthSqr);
        sphereToParticle /= length;

        particle.ResolveCollision(sphereToParticle * fabs(combinedRadius-length), 
            sphere.GetVelocity(), sphere.GetShape());
    }
}
开发者ID:huaminglee,项目名称:cloth-simulator,代码行数:16,代码来源:collisionsolver.cpp

示例3: SolveParticleHullCollision

void CollisionSolver::SolveParticleHullCollision(CollisionMesh& particle, 
                                                 const CollisionMesh& hull)
{
    // Determine if within a rough radius of the convex hull
    const D3DXVECTOR3 sphereToParticle = particle.GetPosition() - hull.GetPosition();
    const float lengthSqr = D3DXVec3LengthSq(&sphereToParticle);
    const float extendedParticleRadius = particle.GetRadius() * 2.0f;
    const float combinedRadius = hull.GetRadius() + extendedParticleRadius;

    if (lengthSqr < (combinedRadius*combinedRadius))
    {
        Simplex simplex;
        if(AreConvexHullsColliding(particle, hull, simplex))
        {
            simplex.GenerateFaces();
            const D3DXVECTOR3 penetration = GetConvexHullPenetration(particle, hull, simplex);
            particle.ResolveCollision(penetration, hull.GetVelocity(), hull.GetShape());
        }
    }
}
开发者ID:huaminglee,项目名称:cloth-simulator,代码行数:20,代码来源:collisionsolver.cpp


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