2013-04-16 2 views
1

Я пытаюсь вычислить столкновение краев повернутого прямоугольника.Как вычислить столкновение вращающегося прямоугольника

Вот пример на jsFiddle: http://jsfiddle.net/XgHxx/

Что-то вроде этого:

if(mask.x < img.x * rotate_Factor) mask.x = img.x * rotate_Factor ; 

Как вы видите мое столкновение только для не повернутого изображения. И я хочу, чтобы Rectangle находился внутри изображения, даже когда он повернулся.

Спасибо, Моттенманн.

пса .: Я привел пример того, как я думаю, что это может быть вычислено: RotatedImgColl

+0

Возможный дубликат [Как проверить пересечение между двумя поворотными прямоугольниками?] (Http://stackoverflow.com/questions/10962379/how-to-check-intersection-between-2-rotated-rectangles) – Gajus

+0

Я надеюсь, что мой live [ответ] (https://stackoverflow.com/a/41513341/2401386) также помогает. – Blauharley

ответ

1

Похоже, он уже был дан ответ: см этот вопрос How to check intersection between 2 rotated rectangles?, есть также ответ, который обеспечивает реализацию JS.

+0

это не очень помогает мне, так как его о полигонах, где установлены координаты ребер. – Mottenmann

+0

Прямоугольники - выпуклые многоугольники, поэтому он должен применяться, не согласны? Теперь оставшаяся задача - найти координаты вращающегося прямоугольника (изображение). –

+0

действительно, вот моя главная проблема, чтобы их найти :) – Mottenmann

1

Думая из моего слабого математического вида, вы можете проверить, что выяснив, если какие-либо из угловых точек маски содержатся по границам вашего изображения.

Вы можете сделать это, вычислив линейные уравнения вашего изображения (исходя из его положения), затем проверьте, не лежит ли какая-либо из угловых точек маски на любой из границ, а затем прекратите движение коробки в том направлении, в котором угловая точка попадает на границу.

Всего пару математических формул.

Существует, вероятно, лучший способ сделать это в JQuery, но вам не нужны какие-либо библиотеки для решения выше :)

+0

Да, я думал, что так будет работать. Но я не знаю, как получить координаты каждого края. – Mottenmann

+0

Возможно, мне что-то не хватает, но не можете ли вы просто получить координаты изображения/маски, получив верхнюю и левую точки изображения/маски? как только у вас есть координаты всех четырех углов, вы можете легко вычислить уравнение границ. – Undefined

+0

он должен быть способен, но даже размер изображения не меняется. он должен быть таким же широким, как и его высота и т. д., когда он находится на 90 °, но он по-прежнему такой же, как и раньше:/ – Mottenmann

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