Вектора
на канве или другой какой плоскости поставить точку или линию, при наведении на нее мышкой получать сообщение что это объект_n, и в том же духе...
Хочу научится работать с векторами как то:
на канве или другой какой плоскости поставить точку или линию, при наведении на нее мышкой получать сообщение что это объект_n, и в том же духе...
Рассмотрим для линии. Пусть ее концы заданы точками A(xa,ya) и B(xb,yb). Тогда уравнение этого отрезка будет:
t=(x-xb)/(xa-xb)=(y-yb)/(ya-yb).
Теперь, отлавливая OnMouseMove, и получая координаты мыши X, Y, подставим их в это уравнение, и если выполняется условие:
t=(X-xb)/(xa-xb)=(Y-yb)/(ya-yb).
и условие, 0<=t<=1, то мышь попала на отрезок.
Для точки, я думаю, все понятно. Там просто надо сравнить координаты указателя мыши с координатами точки.
В случае, если xa=xb или ya=yb (вертикальный или горизонтальный отрезки), нужно
1. При xa=xb. Если X=xa, и 0<=t=(Y-yb)/(ya-yb)<=1 то мышь попала на отрезок.
2. При ya=yb. Если Y-ya и 0<=t=(X-xb)/(xa-xb)<=1 то мышь попала на отрезок.
Тогда переберая все отрезки (точки), и сравнивая координаты мыши с отрезками (точками), находим тот, на который попала мышь