Detectează coliziunile pe canvas

Vreau să adaug un feature la o librărie de desenat pe canvas care apoi îți dă posibilitatea să salvezi desenul ca și imagine sau .svg - https://github.com/szimek/signature_pad
Metoda care trebuie adăugată va detecta când un punct întâlnește o altă formă din desen sau punctul în care o formă geometrică își închide conturul, sau punctele în care o linie orizontală intersectează alte liniii desenate vertical.
Când aflu acest punct sau puncte vreau să îi știu coordinatele și apoi să trigheruiesc un eveniment.
Uni zic că isPointInPath() ar fi soluția https://stackoverflow.com/questions/20275316/detecting-mouse-collision-with-closed-bezier-curved-shapes-in-canvas dar formele și liniile sunt neregulate(nu am o formulă matematică după care să le calculez)…
În acest diff (stânga codul original, dreapta cod adăugat)
https://www.diffchecker.com/JxtwFKdi ascult pe evenimentele de mousedown, mousemove, touchstart, touchmove și iau coordonatele.
Observ că sunt mai multe puncte care compun o formă dacă desenez într-un interval de timp scurt decât atunci când aceeași formă este desenată într-un interval de timp mai lung.
Abordarea pe care aș fi încercat-o dacă erau același nr de puncte era să compar coordonatele pozitiei actuale cu fiecare pereche de coordonate din vectorul anterior de coordonate.
Are cineva vreo sugestie despre cum se poate implementa?