// Cdot = dot(u, v + cross(w, r))
Vec2.crossToOutUnsafe(wA, m_rA, vpA);
vpA.addLocal(vA);
Vec2.crossToOutUnsafe(wB, m_rB, vpB);
vpB.addLocal(vB);
float Cdot = Vec2.dot(m_u, vpB.subLocal(vpA));
float impulse = -m_mass * (Cdot + m_bias + m_gamma * m_impulse);
m_impulse += impulse;
float Px = impulse * m_u.x;