Malcolm, вот так upwap.ru/265799 с твоей формулой работает. Создай пятёркой 2 точки, поменяй режим правым софтом и создай линию на этих точках. Если курсор на линии, то линия красная, но это както далеко не всегда. А вот так я метод написал upwap.ru/265802
DDDEN!SSS, может, и не все идеально работает, я ж ее на деле не проверял. Я только кинул тебе идею, а ты уж сам разберись, почему там не всегда все срабатывает. Кстати, последнее выражение с if можно записать куда проще: return (y-y1)(x2-x1) == (x-x1)(y2-y1);
Сделал чтобы все вычисления этой формулы были написаны upwap.ru/265923 и увидел, что чем больше линия, тем больше эти числа отличаются. Помоему формула требудт число с точностью до тысячных. Придётся свою формулу бспоминать, на неё все мои надежды.
Malcolm, a где ты там доли видел? Там все числа целые. И малейшое изменение точки меняет одно из сравниваемых чисел гдето на 10. И эти числа не когда не бывают одинаковы.
DDDEN!SSS, вот и я про то, что нигде не видел, а ты в посте пишешь про тысячные. Небольшие отклонения - не проблема, бери разницу между сравниваемыми и сравнивай ее модуль с максимально допустимым отклонением.
4 янв 2009 в 18:34