function testEllipseEllipse(a, ellipseA, b, ellipseB, response) {
	// Check if the distance between the centers of the two
	// circles is greater than their combined radius.
	const differenceV = T_VECTORS.pop()
		.copy(b.pos)
		.add(b.ancestor.getAbsolutePosition())
		.add(ellipseB.pos)
		.sub(a.pos)
		.add(a.ancestor.getAbsolutePosition())
		.sub(ellipseA.pos);
	const radiusA = ellipseA.radius;
	const radiusB = ellipseB.radius;
	const totalRadius = radiusA + radiusB;
	const totalRadiusSq = totalRadius * totalRadius;
	const distanceSq = differenceV.length2();
	// If the distance is bigger than the combined radius, they don't intersect.
	if (distanceSq > totalRadiusSq) {
		T_VECTORS.push(differenceV);
		return false;
	}
	// They intersect.  If we're calculating a response, calculate the overlap.
	if (response) {
		const dist = Math.sqrt(distanceSq);
		response.a = a;
		response.b = b;
		response.overlap = totalRadius - dist;
		response.overlapN.copy(differenceV.normalize());
		response.overlapV.copy(differenceV).scale(response.overlap);
		response.aInB = radiusA <= radiusB && dist <= radiusB - radiusA;
		response.bInA = radiusB <= radiusA && dist <= radiusA - radiusB;
	}
	T_VECTORS.push(differenceV);
	return true;
}
Check if two Ellipse collide.
@ignore
@param {Renderable|Container|Entity|Sprite|NineSliceSprite} a - a reference to the object A.
@param {Ellipse} ellipseA - a reference to the object A Ellipse to be tested
@param {Renderable|Container|Entity|Sprite|NineSliceSprite} b - a reference to the object B.
@param {Ellipse} ellipseB - a reference to the object B Ellipse to be tested
@param {Response=} response - Response object (optional) that will be populated if
  the circles intersect.
@returns {boolean} true if the circles intersect, false if they don't.