collideCircles method
void
collideCircles(
- Manifold manifold,
- CircleShape circle1,
- Transform xfA,
- CircleShape circle2,
- Transform xfB,
Compute the collision manifold between two circles.
Implementation
void collideCircles(
Manifold manifold,
CircleShape circle1,
Transform xfA,
CircleShape circle2,
Transform xfB,
) {
manifold.pointCount = 0;
// after inline:
final circle1p = circle1.position;
final circle2p = circle2.position;
final pAx = (xfA.q.cos * circle1p.x - xfA.q.sin * circle1p.y) + xfA.p.x;
final pAy = (xfA.q.sin * circle1p.x + xfA.q.cos * circle1p.y) + xfA.p.y;
final pBx = (xfB.q.cos * circle2p.x - xfB.q.sin * circle2p.y) + xfB.p.x;
final pBy = (xfB.q.sin * circle2p.x + xfB.q.cos * circle2p.y) + xfB.p.y;
final dx = pBx - pAx;
final dy = pBy - pAy;
final distSqr = dx * dx + dy * dy;
// end inline
final radius = circle1.radius + circle2.radius;
if (distSqr > radius * radius) {
return;
}
manifold.type = ManifoldType.circles;
manifold.localPoint.setFrom(circle1p);
manifold.localNormal.setZero();
manifold.pointCount = 1;
manifold.points[0].localPoint.setFrom(circle2p);
manifold.points[0].id.zero();
}