передвижение с помощью матриц
Вот столкнулся с проблемой (т.к недавно перешел на С++):
Осуществляю передвижение объектом с помощью функции: Код:
void MoveEntity(D3DXMATRIX& m,float dx,float dy,float dz) Чет мозги не варят как можно сделать передвижение разных объектов с помощью одной функции? |
Ответ: передвижение с помощью матриц
Каково причина обьявления x,y,z статиками?
|
Ответ: передвижение с помощью матриц
Цитата:
Я так понял когда объявляешь их статиками то каждый вызов функции не происходит перезапись участков памяти для переменных, а это экономия ресурсов. |
Ответ: передвижение с помощью матриц
Написал чуть модифицированную функцию но тут проблем еще больше:
Код:
void MoveEntity(D3DXMATRIX& m,float dx,float dy,float dz) |
Ответ: передвижение с помощью матриц
зачем такие извращения с внутренностями матрицы?
чем D3DXMatrixTranslation(...) не угодил? |
Ответ: передвижение с помощью матриц
были проблемы со стандартными матрицами и с углами... да и к тому же хочется понять саму матрицу научится с ней работать ..
|
Ответ: передвижение с помощью матриц
>>static
это не экономия ресурсов, компилятор умнее тебя и умеет экономить их эффективней. бегло взглянул на вторую ф-цию, вроде всё норм (ток -z вроде не надо). возможно порядок умножения где-то нарушен при установке матриц. (под "без переменных" подразумиваются нулевые значения?) |
Ответ: передвижение с помощью матриц
Цитата:
2) вторая функция не пашит именно из-за того что я проделываю операцию x = m._41 + dx; y ... ; z... ; Я даже не могу понять что происходит с камерой толи она отдаляеться далеко и поэтому я не вижу предмета, толи каким-то образом нарушаються матрици вида хз? |
Ответ: передвижение с помощью матриц
Цитата:
|
Ответ: передвижение с помощью матриц
Все разобрался оказалось даже проще:
Код:
void MoveEntity(D3DXMATRIX& m,float dx,float dy,float dz) нужно обьявлять явно матрици которые инициализированы и токо тогда все будет как надо перемещаться: НАПРИМЕР: D3DXMATRIX matWorldPos; matWorldPos._11 = 1; matWorldPos._12 = 0; matWorldPos._13 = 0; matWorldPos._14 = 0; matWorldPos._21 = 0; matWorldPos._22 = 1; matWorldPos._23 = 0; matWorldPos._24 = 0; matWorldPos._31 = 0; matWorldPos._32 = 0; matWorldPos._33 = 1; matWorldPos._34 = 0; matWorldPos._41 = 0; matWorldPos._42 = 0; matWorldPos._43 = 10; matWorldPos._44 = 1; dev->SetTransform(D3DTS_WORLD,&matWorldPos); |
Ответ: передвижение с помощью матриц
об этом тебе mr_f и сказал.
к тому же можно воспользоваться D3DXMatrixIdentity() |
Ответ: передвижение с помощью матриц
Доки не читай @ сразу пиши код.
|
Ответ: передвижение с помощью матриц
А как сделать передвижение объекта с помощью матриц в локальных координатах?
|
Ответ: передвижение с помощью матриц
может книжки почитаешь а? учебник там, по линейной математике? ну или Луну того же (там в общем-то доступно всё написано)
или доки хотя б какие-нибудь? как-то не гоже спрашивать такие вещи.. кури матрицы перехода, и, подскажу с твоими локальными преобразованиями, произвдение матриц перехода составляет комбинацию преобразований. (вроде ж математически коректно выразился xD ) Отсюда и пляши, чо на чо умножить, что бы перемещать тела в локальных СК.. а лучше книжки почитать) |
Ответ: передвижение с помощью матриц
Цитата:
|
Часовой пояс GMT +4, время: 09:29. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot