Sí, pero hay algoritmos ligeramente más rápidos que ese, por ejemplo el que yo he usado en algun minijuego y explicaré en algún tutorial:
http://jsfiddle.net/marlanga/R557U/
La idea es el mismo que en el tuyo, pero jugando con las comparaciones de vértices me ahorro algún paso que tú necesitas dar.
Haz click en el canvas negro para poner el punto en otro sitio.