Допустим, ваш фактический источник находится на 200 200 в экранных координатах. Почему бы просто не вычесть 200 200 из соответствующих точек, прежде чем делать ваши расчеты? Затем вы делаете свои расчеты, как если бы происхождение было 0,0. Наклон не изменится.
Кстати, iPhone обладает достаточной мощностью для тригонометрии. Я сделал пересечение точек в окружности, сравнивая расстояние от точки до средней точки с известным радиусом окружности. Вы можете использовать касательную к окружности с наклоном, идентичным линии, которую вы хотите проверить, чтобы найти пересечение линии, проведенной от средней точки, и сравнить длину с радиусом. В любом случае, все в CGFloats, и я пока не смог замедлить даже 3G.