2014-01-08 1 views
0

Прежде всего позвольте мне сказать, что я не очень хорошо разбираюсь в математике. У меня есть холст с несколькими текстовыми «ящиками», которые повернуты до 300 °, что в основном делает их параллелограммами. Они очень похожи на это:Математическая помощь для параллелограммов на холсте

enter image description here

Я пытаюсь обнаружить, если мышь находится над одной из них, но я не знаю, как сделать это. Пожалуйста помоги. Спасибо!

ответ

1

Decomposition

Каждый параллелограмм может быть в первую очередь содержится в прямоугольной ограничивающей рамки, подобный показанному выше. Если мышь не находится внутри этого прямоугольника, то это определенно не является хитом. У вас уже много легких тестов. Остальная часть пространства может быть разложена на параллелограмм, представляющий интерес в зеленом, и области, которые вы не хотите. Поэтому нам просто нужно проверить, если мышь находится в красных областях со следующими испытаниями:

Слева: х < а - (а/ч) * у

Справа: х> (а + б) - (a/h) * y

Если любое из этих условий истинно, мышь находится за пределами параллелограмма.

  • Обратите внимание, что в этом случае я принимаю y в верхней части и увеличивается при движении вниз, а x равен нулю слева и увеличивается при движении вправо.

Для получения дополнительной информации о значении a, мы можем перейти к триггеру.

enter image description here

Если мы знаем угол тета и час, затем

A = H тан (Ɵ)

2

Простейший способ заключается в использовании преобразования в точке мыши, а затем выполнить простую проверку прямоугольника на преобразованной точке. Пока используемое аффинное преобразование не отображает все в строке, оно будет иметь четко определенный обратный.

+0

+1 Это более точный ответ. – markE

Смежные вопросы