Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.01.25;
Скачать: CL | DM;

Вниз

Геометрия, помогите освежить...   Найти похожие ветки 

 
Ламо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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.01 c
2-1228771391
cruiser
2008-12-09 00:23
2009.01.25
Как создать компонент в D2009?


15-1227708872
Ega23
2008-11-26 17:14
2009.01.25
У меня тут мобильник сперли давеча


8-1189679198
master_asasin
2007-09-13 14:26
2009.01.25
Форма окна по картинке


15-1228120463
Scot Storch
2008-12-01 11:34
2009.01.25
Окна приложения


1-1207176526
Дмитрий Белькевич
2008-04-03 02:48
2009.01.25
Как собирать экзешники с разными иконками?