示例#1
0
// [O] CYLINDER - CYLINDER
bool CylinderCollider::Collide( const CylinderCollider& other ) const
{
	float s, t;
	glm::vec3 c1, c2;
	glm::vec3 sqrDistance( ClosestPtSegmentSegment( position, end, other.position, other.end, s, t, c1, c2 ) );
	float radiusSum = radius + other.radius;
	return sqrDistance.x <= ( radiusSum * radiusSum );
}
示例#2
0
int TestCapsuleCapsule(Capsule c1, Capsule c2)
{
    float s, t;

    V3 p1, p2;

    float dist = ClosestPtSegmentSegment(c1.a, c1.b, c2.a, c2.b, &t, &s, &p1, &p2);

    float radius = c1.r + c2.r;

    return dist <= radius * radius;
}