LINUX.ORG.RU
ФорумTalks

Построить прямоугольник по 2 точкам

 


0

1

Всем бобра! Каждому из нас понятно как построить (получить координаты всех вершин) прямоугольник, если есть вершины с главной диагонали. У меня вот вопрос. Как восстановить ВСЕ вершины, если есть 2 эти же точки, и известно, что данный прямоугольник повернут вокруг оси проходящей через чего центр на угол альфа?

★★★

Посчитать вершины без поворота, сместить систему координат так, чтобы ось вращения была в (0,0) и повернуть. Затем по желанию можно сместить систему координат назад.

Sadler ★★★
()
Последнее исправление: Sadler (всего исправлений: 2)
Ответ на: комментарий от Sadler

Судя по первой фразе, я так понимаю Вы меня недопоняли. Имеющиеся 2 точки УЖЕ повернуты. Я так понимаю вы предлагаете а) Сместить центр СК в центр пр-ка б) повернуть имеющиеся 2 точки на угло минус альфа в) посчитать вершины г) Повернуть все на место (на альфа)

LIKAN ★★★
() автор топика

Сам посчитай.

luke ★★★★★
()
Ответ на: комментарий от LIKAN

считай недостающие точки в повернутой СК, затем поворачивай назад

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от Sadler

и повернуть.

Лучше пусть с ранних лет привыкает поворачивать матрицей перехода в однородных координатах. ©

quickquest ★★★★★
()
Последнее исправление: quickquest (всего исправлений: 1)
Ответ на: комментарий от LIKAN

Судя по первой фразе, я так понимаю Вы меня недопоняли.

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

Sadler ★★★
()
Последнее исправление: Sadler (всего исправлений: 2)

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

А какая диагональ называется главной, хех? И да, как же, если не секрет, построить прямоугольник по 2 точкам?

Zaskar
()

Вроде как элементарно. Вершины с главной диагонали есть — замечательно, находим середину отрезка, соединяющего эти вершины, — это центр прямоугольника. Дальше строим прямую через центр прямоугольника под углом альфа. И зеркально отражаем вершины на диагонали относительно данной прямой. Всё!

iVS ★★★★★
()

Каждому из нас понятно как построить [..] прямоугольник, если есть вершины с главной диагонали.

А мне вот непонятно, ибо есть минимум 2 решения.

известно, что данный прямоугольник повернут [..] на угол альфа

Очевидно же, поворачиваешь на угол -α, узнаёшь вершины (магическим способом, см. выше), поворачиваешь обратно на α.

beastie ★★★★★
()

Вроде так: lenDiag = sqrt( ( xb - xa ) * ( xb - xa ) + ( yb - ya ) * ( yb - ya ) ); cosBeta = (xb - xa) / lenDiag; beta = arccos ( cosBeta ); gamma = beta - alpha; c = lenDiag * cos ( gamma ); xc = xa + c * sin ( alpha );

ishmourzin
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.