precise polygon collision