Как найти/задать точку на окружности?

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Ответить
MaxmaD
Сообщения: 23
Зарегистрирован: 07 авг 2004, 13:38

У меня возникла такая проблема, нужно сделать вращающийся квадрат по своей оси. Ось - центр квадрата. Сколько я не думал, прихожу к выводу что для этого надо использовать окружность. И если длину окружности поделить на 4 части получатся равные промежутки. Если точку окружности знать и уметь задавать, то можно при нажатии кнопки задавать точку на окружности, например, на градус меньше/больше.

Вот такой вот каламбур. :) Заранее благодарен.
Грязь под ногами бродяг, чище чем фальшь сладких слов. (с) Ария. "Улица роз".
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

Пусть A - угол в градусах, а R - это радиус той самой окружности, на которой лежат вершины квадрата.


Первый угол квадрата: X:=R*sin(A*Pi/180); X:=R*cos(A*Pi/180);
Второй угол квадрата: X:=R*sin((A+90)*Pi/180); X:=R*cos((A+90)*Pi/180);
Третий угол квадрата: X:=R*sin((A+180)*Pi/180); X:=R*cos((A+180)*Pi/180);
Четвертый угол квадрата: X:=R*sin((A+270)*Pi/180); X:=R*cos((A+270)*Pi/180);

Домашнее задание:
Воспользуйтесь формулами приведения с сократите выражения :)
MaxmaD
Сообщения: 23
Зарегистрирован: 07 авг 2004, 13:38

Ох, уж эта математика... :)
Спасибо!
Я тут тоже много чего нарыл, если кому интересно, то окружность рисуется по алгоритму Брезенхама, захотите узнать по подробнее можно поискать в и-нете или мыльнуть мне.
Грязь под ногами бродяг, чище чем фальшь сладких слов. (с) Ария. "Улица роз".
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Наверное Naeel, имел ввиду:

Первый угол квадрата: X:=R*sin(A*Pi/180); Y:=R*cos(A*Pi/180);
Второй угол квадрата: X:=R*sin((A+90)*Pi/180); Y:=R*cos((A+90)*Pi/180);
Третий угол квадрата: X:=R*sin((A+180)*Pi/180); Y:=R*cos((A+180)*Pi/180);
Четвертый угол квадрата: X:=R*sin((A+270)*Pi/180); Y:=R*cos((A+270)*Pi/180);

Как в детской книжке: сравни и найди четыре отличия :)
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

А, ну да!
"Y", конечно!
Ответить