![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 26.05.2009
Сообщений: 12
|
![]()
Есть линия.Как заставить ее вращаться вокруг своей оси(центра линии) при нажатии любой клавиши?Заранее спасибо.(если можно то пример кода хотя бы в 1сторону чтоб вращалось, дальше сам доделаю)еще раз спасибо
|
![]() |
![]() |
![]() |
#2 |
В тени
Старожил
Регистрация: 19.12.2008
Сообщений: 5,788
|
![]()
При таком объеме исходной информации вам вряд ли можно ответить что-то конкретное. Какая среда? Как рисуете линию?
Чтобы заставить линию вращаться, нужно через определенный интервал перерисовывать ее (затирая старую). Тригонометрия в помощь. Подозреваю, что пример на паскале вас вряд ли устроит.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем. ___________________________________ ___________________________________ _______ [=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль] |
![]() |
![]() |
![]() |
#3 |
Eclipse Foundation
Старожил
Регистрация: 19.09.2007
Сообщений: 2,604
|
![]()
Just use Affine Transformation!
Вбиваем в гуглоту "Афинные преобразования Вики" и наслаждаемся. |
![]() |
![]() |
![]() |
#4 |
Пользователь
Регистрация: 27.07.2009
Сообщений: 27
|
![]()
Самый лучший способ это использование матриц. Пример матриц можно найти в инете или в DirectX SDK. В DirectX SDK используются матрицы для 3D, тебе необходимо переделать их для 2D и все.
Вот ссылка на статью в википедии: http://ru.wikipedia.org/wiki/Матрица_поворота |
![]() |
![]() |
![]() |
#5 |
Старожил
Регистрация: 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 (при условии что клавиша нажата). |
![]() |
![]() |
![]() |
#6 |
Пользователь
Регистрация: 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. |
![]() |
![]() |
![]() |
#7 |
Студент, не
Старожил
Регистрация: 29.01.2009
Сообщений: 2,067
|
![]()
I am the First of Cyber Evolution...
I am the First to Program your Future... |
![]() |
![]() |
![]() |
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как заставить браузер рисовать рамку вокруг пустой ячейки? | 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 |