В противном случае, как жесткий край, это линия, над которой мышь не может пересечься. Полезен в играх и т. П.Реализация грани, ограничивающего мышь
В настоящее время у меня есть функция, которая возвращает, если мой указатель мыши находится в полигоне, нарисованном на экране. Если это не так, я перемещаю курсор на последнюю сохраненную точку, расположенную в многоугольнике.
if (!PointInPolygon(local, polyGon))
{
Cursor.Position = safePoint;
}
else
{
safePoint = Cursor.Position;
}
Я не люблю это по нескольким причинам:
Из-за замедления времени обновления или по какой-либо причине, я иногда в состоянии вырваться из коробки. Затем он сохраняет эту позицию как safePoint, за пределами многоугольника. Моя мышь затем застряла в этом положении.
Наклонные края должны опутать мышь в направлении наклона. Нажатие правой кнопки мыши на «/» образной стене должно заканчиваться курсором в верхнем правом углу. Но из-за характера этого подхода, переходя по линии, сброс курсора туда, где он был ранее. Продолжать движение по правому краю будет только сбрасывать курсор и не будет нажимать «вверх по склону».
Есть ли какие-либо другие подходы к решению этой проблемы? Меня беспокоит последний вопрос: это поперечное поведение склона является главной целью моей программы, и мне нужно заставить ее работать. Даже если я использую этот базовый метод, любые идеи для оптимизации этого конкретного поведения?
EDIT:
Были предложен Ридом, что я вместо того, чтобы вернуться к тому, что ближе всего к текущим недоступным точкам. Учитывая четыре угловые точки четырехугольника, как мне найти ближайшую точку в/на фигуре?
Хм, отличная идея. Теперь мне нужно только выяснить, учитывая, что четыре точки, которые связывали четырехугольник, какой лучший/самый простой способ найти ближайшую точку? – cksubs
Вот несколько алгоритмов для вас: http://www.devmaster.net/forums/archive/index.php/t-103.html С небольшими многоугольниками (зависит от вашей ситуации, но обычно менее 10 сегментов или около того), просто точка поиска грубой силы -> сегменты часто являются самым быстрым подходом. –