I have left my source of information as docstring comment on code side. If you want to solve the problem yourself do not run the code. This code actually gives the correct answer. I have not reacted to the border case comment in my formula source as it is quite common to consider on border part of inside. You can add the simple check with optional parameter for how to react to case, for example, if you need it.
As everybody have read carefully Python documentation, the source of Point object by namedtuple should be clear.
It is worth to notice the point of comparing floating point number to other with epsilon. Even there have been earlier discussion on topic.
Also notice that I have not avoided using the string as keyword parameter as the object type is str or BaseString, and it is OK to use those reserved words as keyword parameter names to make them more natural. Movie database can have attribute id, for example.