Имя: Пароль:
IT
 
Поворот прямоугольника с изменением центра поворота.
0 DGorgoN
 
16.11.11
12:50
Есть прямоугольник с заданными координатами xy, длина и ширина допустим х1 и у1. Прямоугольник можно повернуть, но ось поворота всегда 1 - точка ху.

Ломаю голову как можно сдвинуть центр вращения на произвольную точку.
1 Ненавижу 1С
 
гуру
16.11.11
12:51
а теперь более внятно
2 DGorgoN
 
16.11.11
12:51
Хотя вроде делал раньше, просто формулу не помню..
3 sda553
 
16.11.11
12:52
Углы прямоугольника задаем векторами. Матрица поворота на вектора и ответ. Геометрию надо было учить аналитическую
4 sda553
 
16.11.11
12:52
5 DGorgoN
 
16.11.11
12:53
(3) Проблема в том что он уже есть готовый, это обьект. Если он точками был бы представлен то без проблем
6 sda553
 
16.11.11
12:53
Из объекта вычисли точки
7 1Сергей
 
16.11.11
12:54
Скольки-мерное пространство?
8 Ненавижу 1С
 
гуру
16.11.11
12:54
я так понял на (1) тупо забили
9 sda553
 
16.11.11
12:55
Я телепат: у ТС программа компьютерная описывает объект заданный координатами одного из углов, длиной и шириной. ТС спрашивает как получить новый объект путем поворота старого вокруг произвольной оси
10 DGorgoN
 
16.11.11
12:57
(9) Еще объекту можно только задавать координаты и угол поворота с центром xy.

Вот именно что грамотно сформулировать вопрос не могу - думаю если б сформулировал грамотно сам бы ответ нашел =)
11 DGorgoN
 
16.11.11
12:58
Грубо говоря взяли лист А4 бумаги. Мы можем его повертеть взявшись за один из углов. Как можно сделать так что бы можно было его виртуально проткнуть и крутить уже вокруг этой оси..
12 1Сергей
 
16.11.11
12:59
(9) если так. то, ему нужно тупо просчтать координаты точки при повороте:

x1=смещениеХ+(x1-смещениеХ)*cos(Угол)-(смещениеУ-y1)*sin(Угол);
y1=смещениеУ+(x1-смещениеХ)*sin(Угол)+(y1-смещениеУ)*cos(Угол);
13 1Сергей
 
16.11.11
13:00
пардон.
x1=смещениеХ+(x1-смещениеХ)*cos(Угол)+(смещениеУ-y1)*sin(Угол); // Не минус, а плюс в середине
14 sda553
 
16.11.11
13:00
(12) Нет не так, тебе надо расчитать координаты ВСЕХ 4 углов относительно точки вращения (а не относительно начала координат) и применить это преобразование ко всем 4-м координатам
15 ptiz
 
16.11.11
13:01
Каждый угол - точка.
Получаем координаты точки в новой системе координат (где проткнули), поворачиваем, сдвигаем координаты к исходным.
16 1Сергей
 
16.11.11
13:01
(14) тупо повернуть каждую точку не канает? Я специально написал смещения
17 sda553
 
16.11.11
13:02
(16) Да, вроде ошибок нет, можно и так
18 sda553
 
16.11.11
13:03
(17) Но ты конечно понимаешь, что во втором выражении в программе надо использовать старое значение x1
19 1Сергей
 
16.11.11
13:04
(18) верное замечание