У меня возникли проблемы с тем, чтобы обдумать, как это кодировать, и будет признателен за любую помощь.Руководство по эффекту привязки к краю
alt text http://agutie.homestead.com/FiLEs/triangle_square/triangle_square_03.gif
На картинке выше что-то я гугле быстро, но изображает достойный пример. Представьте, что квадраты и треугольник могут перемещаться пользователем. Если пользователь перетаскивает и отбрасывает квадрат BGFC «рядом» с треугольником ABC, я хотел бы автоматически привязать/переместить квадрат, чтобы выровняться с краем треугольников. Вершины не должны совпадать (и предпочтительнее не будет так, чтобы привязка не была настолько ограничительной), я просто хочу переместить квадрат так, чтобы его ближайший край пересекался с ближайшим краем треугольников.
Предоставленный доступ ко всем координатам/вершинам/углам, существует ли какой-либо разумно простой способ достижения этого эффекта привязки к краю?
Если это слишком сложный пример, как насчет двух прямоугольников со всеми углами 90 градусов в одной и той же ситуации? Перетаскивая один прямоугольник рядом с другим и автоматически привязывая прямоугольник к краю другого.
Я предполагаю, что есть математический способ снять это, что я буду рад исследованию, учитывая толчок в правильном направлении. Спасибо за вашу помощь!