Я предпочитаю веб-сайт мистера Бурка для таких вопросов. Вот его статья по линии intersectoin:
Точка пересечения двух линий
Учитывая, насколько это тривиально, оптимизировать довольно сложно.
Полагаю, лучшее, что вы можете сделать, - это убедиться, что все находится в кэше ЦП, чтобы вы могли выполнять эти математические операции на полной скорости. У вас может возникнуть искушение заранее вычислить некоторые из различий (P2 - P1), но в этом мире трудно сказать, будет ли поиск в памяти этого быстрее, чем просто выполнение самого вычитания. Процессоры могут выполнять вычитание и умножение за 1 операцию, тогда как поиск памяти, если они пропустили кеш, может занять на пару порядков больше.