Форум: "Прочее";
Текущий архив: 2009.01.25;
Скачать: [xml.tar.bz2];
ВнизГеометрия, помогите освежить... Найти похожие ветки
← →
Ламо777 © (2008-12-01 09:16) [0]Здравствуйте.
Напомните, как найти принадлежность точки некоей линии
на плоскости. К примеру, есть ломаная, заданная точками
(1,1), (5,20), (15.7) и т.д.
Нужно при наведении мыши на эту линию - подсвечивать ее, и вытаскивать доп. информацию по ней.
Как я понимаю, в данном случае на канве нет точек, явно принадлежащих линии - есть только точки, лежащие более или менее близко к ней. Как определить, что точка условно "принадлежит" ломаной?
))) Самому стыдно за такие тупые вопросы, это ж школьная программа. Кто помнит ключевые слова, или раздел геометрии с решением - пните плиз... А то что-то не могу найти в инете, а Погорелова под рукой нет(там вроде была такая задача).
ЗЫ: пишу на AS 3, если кто-то знает более простые способы решения - буду очень благодарен.
← →
wal © (2008-12-01 09:29) [1]www.nuru.ru/mat/geom/011.htm
← →
Григорьев Антон © (2008-12-01 09:56) [2]Обычно это делается с помощью траекторий и регионов. Рисуете вашу ломаную между функциями BeginPath/EndPath, чтобы получить из неё траекторию (рисовать придётся "туда" и "обратно", потому что траектория должна быть замкнутой), потом при необходимости с помощью WidenPath расширяете траекторию, чтобы можно было тыкать мышкой не строго в линию, а чуть-чуть не попадать, потом превращаете траекторию в регион (функция PathToRegion), потом с помощью PtInRegion можно определить, попала точка в регион или нет. Достоинство метода - он годится не только для отрезков и ломаных, но и для фигур любой формы.
← →
Сергей М. © (2008-12-01 09:57) [3]Точку С можно считать "условно принадлежащей" отрезку ломаной AB, если сумма расстояний от точки С до точек А и B не превышает заданной величины delta.
В цикле по всем отрезкам ломаной для каждого отрезка вычисляется эта сумма.
Результаты > delta отбрасываются из рассмотрения.
Среди оставшихся ищется минимальный.
← →
Сергей М. © (2008-12-01 10:01) [4]Что-то я наплел)..
Точку С можно считать "условно принадлежащей" отрезку ломаной AB, если сумма расстояний от точки С до точек А и B превышает длину отрезка АB на величину не большую delta.
← →
Труп Васи Доброго © (2008-12-01 10:01) [5]Я думаю самый логичный подход (со стороны геометрии) это проверять на принадлежность точки отрезку, который входит в ломаную. Перебором по всем отрезкам ломаной. Это если линия не нарисована. Если же ломаная нарисована, то проще проверять на соответствие цвета канвы под курсором цвету линии, тут и геомертия нафиг не нужна.
А принадлежность точки отрезку проверяй как тебе больше нравится. Хоть расстояния складывай, хоть площать треугольника вычилсляй, да полно способов.
← →
Anatoly Podgoretsky © (2008-12-01 10:41) [6]> Ламо777 (01.12.2008 9:16:00) [0]
Для прямых можно использовать LineDDA, возможен не точный поиск.
← →
Ламо777 © (2008-12-01 13:01) [7]Нашел решение этой и другой ((не)вхождение точки в многоугольник) задачи
на http://alglib.sources.ru/.
Всем откликнувшимся - спасибо большое.
ЗЫ: модераторы, не сочтите за рекламу, просто ресурс понравился))
← →
int64 (2008-12-01 14:58) [8]Я рисовал параллельно все примитивы (линии, полигоны, текст, комбо...) на виртуальном битмапе цветом ИД примитива. Соответственно, чтобы "усилить" возможности поиска по MouseMove, линии рисовал толще, чем на оригинале; на углах рисовал элипсы (чтоб фигуры мышкой менять). Зная позицию курсора на оригинальной канве, по цвету из виртуальной получаешь ИД. Без всякой алгебры.
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2009.01.25;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.011 c