Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.09.2009, 13:09   #1
stscolt
Пользователь
 
Регистрация: 21.04.2008
Сообщений: 50
По умолчанию Как вращать отрезок

У меня не получается написать прогу, в которой отрезок бы вращать вокруг :
1) своего конца;
2)своей середины;
3)относительно точки, делящей отрезок в отношении 1:3
Подскажите пжл. Заранее спасибо.
stscolt вне форума Ответить с цитированием
Старый 10.09.2009, 13:13   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А отрезок задается координатами или в принципе имется ввиду?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.09.2009, 23:26   #3
Kopwyh
НашКодинг
 
Регистрация: 21.05.2009
Сообщений: 9
По умолчанию

Приведу код для второго случая.
Код:
void f2(float *x1, float *x2, float *y1, float *y2, float *rad) 
{ 
     float r, a;
     float cx, cy;
     a = *rad + atan2(*x2 - *x1, *y2 - *y1); // Угол отрезка к оси Х
     r = pow(x2 - x1, 2) + pow(y2 - y1, 2); // Длина отрезка
     cx = (*x1 - *x2)/2; // X центра отрезка, 
     cy = (*y1 - *y2)/2; // Y центра отрезка
     *x1 = r*cos(a)/2 + cx;
     *y1 = r*sin(a)/2 + cy;
     *x2 = -r*cos(a)/2 + cx;
     *y2 = -r*sin(a)/2 + cy;
return;
}
// В случае 1
cx = *x1;
cy = *y1;
*x2 = r*cos(a) + cx;
*y2 = r*sin(a) + cy;
// В случае 3
cx = (*x1 - *x2)/4; // (4 = 1 + 3, т.к. пропорция 3:1)
cy = (*y1 - *y2)/4; 
     *x1 = 3*r*cos(a)/4 + cx;
     *y1 = 3*r*sin(a)/4 + cy;
     *x2 = -r*cos(a)/4 + cx;
     *y2 = -r*sin(a)/4 + cy;
Вот так как-то, но проверить не мешает.
Если не ошибаюсь, проблема была именно в математике, а код перепроверь самостоятельно.

Последний раз редактировалось Kopwyh; 11.09.2009 в 23:29. Причина: Ну блин, наляпал ошибок.
Kopwyh вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отрезок Witaliy Помощь студентам 5 14.02.2009 19:46
как отсортировать массив под данный отрезок и как минимум и максимум из него найти SIEGER Паскаль, Turbo Pascal, PascalABC.NET 1 20.11.2008 08:58
как вращать изображение в image ИЛ87 Помощь студентам 2 15.12.2007 19:47