![]() |
Модераторы: Rickert, Alexeis, BorisVorontsov |
![]() ![]() ![]() |
|
neosapient |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 672 Регистрация: 16.8.2006 Репутация: нет Всего: 4 |
Продолжаю мучать книгу Горнакова
Вот предшествующий вопрос по шестой главе Назрел вопрос также по шестой главе (вторая её часть) Значит есть куб и его вращаю за счет вращения матрицы мира Куб расположен окурат вокруг системы координат (точечная симметрия) Но как быть, если есть два куба и я хочу вращать не весь мир, а каждый куб отдельно в своей локальной системе координат. Подскажите как исправить ниже приведенный пример. Каким функциями пользоваться Это сообщение отредактировал(а) neosapient - 7.3.2007, 23:37 Присоединённый файл ( Кол-во скачиваний: 8 ) ![]() |
|||
|
||||
evilguard |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 19.11.2006 Репутация: нет Всего: нет |
neosapient
Тоже такая проблема была, когда пользовался функциями glRotate, сейчас пользуюсь функцией gluLookAt - посмотри как она работает. При отлавливании сообщений мыши меняются углы, а затем пересчитываю в координаты, используя sin/cos.
Здесь paintGL - функция прорисовки, mousemoveEvent - понятно для чего. Программа использует библиотеку QT, но идея должна быть понятна. Cam_a - горизонтальный угол между линией, соединяющей камеру и объект, cam_b - вертикальный угол, cam_r - расстояние от объекта до камеры, x2, y2, z2 - координаты объекта. Разбирайся короче! Добавлено @ 10:48 Попутал, нужен же directX ![]() Это сообщение отредактировал(а) evilguard - 8.3.2007, 10:51 |
|||
|
||||
neosapient |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 672 Регистрация: 16.8.2006 Репутация: нет Всего: 4 |
а ответа пока нет...
![]() может я некорректно задал вопрос??? PS
Да, directX |
|||
|
||||
neosapient |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 672 Регистрация: 16.8.2006 Репутация: нет Всего: 4 |
тишина
![]() |
|||
|
||||
fantast |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 147 Регистрация: 10.12.2006 Где: минск, столица на шей Родины Репутация: нет Всего: 2 |
в горнакове вродеб была функция matrix так вот делай расширенную версию этой функции, передавая туда к примеру угол поворота и перемещение объекта, тогда когда буш рендерить тоесть между вызовами функций
pDirect3DDevice->BeginScene(); и pDirect3DDevice->EndScene(); вызывай свою функцию matrix с нужными параметрами и рисуй объект нужной функцией, например pDirect3DDevice->DrawIndexedPrimitive(D3DPT_TRIANGLELIST,0,0,36,0,12);(чтото в этом роде..) и так для каждого объекта.
эта часть кода рисует в пространстве два одинаковых объекта например куба, зашли только нужные параметры в функцию matrix и вот у тебя уже будут скажем 2 куба летать по кругу и крутиться вокруг своей оси. я когдато делал атом(ядро и 3 эллектрона,которые летали вокруг него), получилось прикольно. удачи Это сообщение отредактировал(а) fantast - 11.3.2007, 22:07 --------------------
Эпитафия: Он старался. Неизвестный |
|||
|
||||
neosapient |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 672 Регистрация: 16.8.2006 Репутация: нет Всего: 4 |
За подсказку спасибо
![]()
Теперь буду над атомом колдавать ![]() Присоединённый файл ( Кол-во скачиваний: 10 ) ![]() |
|||
|
||||
![]() ![]() ![]() |
Вы можете найти полезным что... | |
|
|
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |