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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.09.2009, 20:59   #1
barbossa
Пользователь
 
Регистрация: 26.05.2009
Сообщений: 12
Восклицание как заставить линию вращатся вокруг её центра?

Есть линия.Как заставить ее вращаться вокруг своей оси(центра линии) при нажатии любой клавиши?Заранее спасибо.(если можно то пример кода хотя бы в 1сторону чтоб вращалось, дальше сам доделаю)еще раз спасибо
barbossa вне форума Ответить с цитированием
Старый 21.09.2009, 23:00   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

При таком объеме исходной информации вам вряд ли можно ответить что-то конкретное. Какая среда? Как рисуете линию?

Чтобы заставить линию вращаться, нужно через определенный интервал перерисовывать ее (затирая старую). Тригонометрия в помощь.
Подозреваю, что пример на паскале вас вряд ли устроит.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 21.09.2009, 23:12   #3
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Just use Affine Transformation!
Вбиваем в гуглоту "Афинные преобразования Вики" и наслаждаемся.
MaTBeu вне форума Ответить с цитированием
Старый 23.09.2009, 08:43   #4
HWork
Пользователь
 
Регистрация: 27.07.2009
Сообщений: 27
По умолчанию

Самый лучший способ это использование матриц. Пример матриц можно найти в инете или в DirectX SDK. В DirectX SDK используются матрицы для 3D, тебе необходимо переделать их для 2D и все.

Вот ссылка на статью в википедии:
http://ru.wikipedia.org/wiki/Матрица_поворота
HWork вне форума Ответить с цитированием
Старый 23.09.2009, 11:43   #5
ds.Dante
Старожил
 
Аватар для ds.Dante
 
Регистрация: 06.08.2009
Сообщений: 2,992
По умолчанию

Какие к черту матрицы? Какие афинные преобразования? Обычная тригонометрия.

Функция рисования будет выглядеть примерно так:
Line (x+l*cos(a), y+l*sin(a), x-l*cos(a), y-l*sin(a));
где x, y - координаты цетра, l - пол-длины отрезка, a - угол поворота (NB: в радианах). Чтобы линия двигалась, нужно в цикле или в таймере прибавлять a, скажем, на 0.01 (при условии что клавиша нажата).
ds.Dante вне форума Ответить с цитированием
Старый 23.09.2009, 14:01   #6
HWork
Пользователь
 
Регистрация: 27.07.2009
Сообщений: 27
По умолчанию

Предлагаю способ лучше:

Вот тебе функция для вращения точки с координатами (x, y) вокруг оси Z.

VOID RotationZ(float* x, float* y, float ang)
{
float tx=(*x)*cos(ang)-(*y)*sin(ang);
float ty=(*x)*sin(ang)+(*y)*cos(ang);
*x=tx;
*y=ty;
}

Где "x" и "y" координаты точки, относительно центра вращения;
ang - угол на который необходимо повернуть, положительное значение вращает в одну сторону, отрицательное в другую.

Функция проверена и работает.

Последний раз редактировалось HWork; 23.09.2009 в 14:07.
HWork вне форума Ответить с цитированием
Старый 24.09.2009, 04:42   #7
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

Анимирование стрелки...
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как заставить браузер рисовать рамку вокруг пустой ячейки? Stilet HTML и CSS 7 11.09.2012 13:36
Как нарисовать линию по пикселям DenLab Общие вопросы Delphi 4 03.12.2008 09:34
Как же нарисовать линию на форме? (Вопрос новичка) grey Помощь студентам 11 24.11.2008 10:31
хочу стереть линию с канвы.КАК? harmager Общие вопросы Delphi 1 24.11.2008 10:28