本文整理汇总了C++中ContactList::AddContact方法的典型用法代码示例。如果您正苦于以下问题:C++ ContactList::AddContact方法的具体用法?C++ ContactList::AddContact怎么用?C++ ContactList::AddContact使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ContactList
的用法示例。
在下文中一共展示了ContactList::AddContact方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: assert
void Flatland::Intersection::FindCircleCircle(const Geometry &g1, const Geometry &g2, ContactList &contacts)
{
assert(g1.GetShape() == Shape::Circle);
assert(g2.GetShape() == Shape::Circle);
const Circle &c1 = static_cast<const Circle&>(g1);
const Circle &c2 = static_cast<const Circle&>(g2);
vec2 delta = c2.Center() - c1.Center();
float radiusSum = c1.Radius() + c2.Radius();
float distance = delta.length();
if (distance > radiusSum)
return;
vec2 pos;
vec2 normal;
float depth;
if (distance <= 0)
{
pos = c1.Center();
normal = vec2(1, 0);
depth = radiusSum;
}
else
{
normal = delta / distance;
float k = 0.5 * (c2.Radius() - c1.Radius() - distance);
pos = c1.Center() + normal * k;
depth = radiusSum - distance;
}
contacts.AddContact(pos, -normal, depth);
}