Показать сообщение отдельно
Старый 12.12.2012, 18:04   #1
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
cos продукт зная разницу размеров.

Задача такая:
1. Есть плоскость. Она поделена на количество колонок. Например:
Ширина плоскости: 600.
Количество колонок: 8.
Градус поворота: 45.
2. Мне нужно повернуть каждую колонку вокруг своей оси (Y). При повороте она становиться уже. Чтобы вычислить насколько уже:
offset = 600 - (600 / 8 * cos(45));
Получаем 22 (округлил).
Таким образом поворачивая колонки и смещая их влево на 22 * (индекс_колонки + 1), мы будем иметь что-то похожее как если мы держим гармошку в обеих руках, но двигаем правую руку влево, когда левую держим на месте.
Справа освободиться пространство, исходя из вычислений 176.

И теперь сама задача:
Мне нужно указать пространство которое освободиться справа. Например 400.
Далее исходя из этих данных мне нужно вычислить угол поворота на который нужно повернуть колонки чтобы они нормально согнулись.
С 400 отступа, мы имеем 200 остаток - это до какой степени нужно сжать колонки.
Т.к. 8 колонок, имеем ширину каждой колонки в сжатом виде - 25. Теперь зная что в нормальном виде колонка имеет ширину 75, а в сжатом 25.
Мне нужно получить градус на который нужно повернуть чтобы из 75 получить 25. Методом подбора нашёл что это 70.5 градусов, но как это получить математически?
Какой операцией мне это сделать?

Решение (спасибо dsd!):
Использовать acos, для преобразования косинуса в градус:
acos(25 / 75) = градус который нам и нужен.

Последний раз редактировалось moka, 12.12.2012 в 20:52.
(Offline)
 
Ответить с цитированием