Поворот прямоугольника с изменением центра поворота. #580232


#0 by DGorgoN
Есть прямоугольник с заданными координатами xy, длина и ширина допустим х1 и у1. Прямоугольник можно повернуть, но ось поворота всегда 1 - точка ху. Ломаю голову как можно сдвинуть центр вращения на произвольную точку.
#1 by Ненавижу 1С
а теперь более внятно
#2 by DGorgoN
Хотя вроде делал раньше, просто формулу не помню..
#3 by sda553
Углы прямоугольника задаем векторами. Матрица поворота на вектора и ответ. Геометрию надо было учить аналитическую
#4 by sda553
#5 by DGorgoN
Проблема в том что он уже есть готовый, это обьект. Если он точками был бы представлен то без проблем
#6 by sda553
Из объекта вычисли точки
#7 by 1Сергей
Скольки-мерное пространство?
#8 by Ненавижу 1С
я так понял на тупо забили
#9 by sda553
Я телепат: у ТС программа компьютерная описывает объект заданный координатами одного из углов, длиной и шириной. ТС спрашивает как получить новый объект путем поворота старого вокруг произвольной оси
#10 by DGorgoN
Еще объекту можно только задавать координаты и угол поворота с центром xy. Вот именно что грамотно сформулировать вопрос не могу - думаю если б сформулировал грамотно сам бы ответ нашел =)
#11 by DGorgoN
Грубо говоря взяли лист А4 бумаги. Мы можем его повертеть взявшись за один из углов. Как можно сделать так что бы можно было его виртуально проткнуть и крутить уже вокруг этой оси..
#12 by 1Сергей
если так. то, ему нужно тупо просчтать координаты точки при повороте: x1=смещениеХ+(x1-смещениеХ)*cos(Угол)-(смещениеУ-y1)*sin(Угол); y1=смещениеУ+(x1-смещениеХ)*sin(Угол)+(y1-смещениеУ)*cos(Угол);
#13 by 1Сергей
пардон. x1=смещениеХ+(x1-смещениеХ)*cos(Угол)+(смещениеУ-y1)*sin(Угол); // Не минус, а плюс в середине
#14 by sda553
Нет не так, тебе надо расчитать координаты ВСЕХ 4 углов относительно точки вращения (а не относительно начала координат) и применить это преобразование ко всем 4-м координатам
#15 by ptiz
Каждый угол - точка. Получаем координаты точки в новой системе координат (где проткнули), поворачиваем, сдвигаем координаты к исходным.
#16 by 1Сергей
тупо повернуть каждую точку не канает? Я специально написал смещения
#17 by sda553
Да, вроде ошибок нет, можно и так
#18 by sda553
Но ты конечно понимаешь, что во втором выражении в программе надо использовать старое значение x1
#19 by 1Сергей
верное замечание
Тэги: Математика и алгоритмы
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С