Как вращать объекты в OpenGL по сравнению с локальными или глобальными осями ⇐ C#

Место общения программистов C#
Anonymous
Как вращать объекты в OpenGL по сравнению с локальными или глобальными осями

Сообщение Anonymous »

Я делаю датчик модуля с акселерометром и гироментом на борту, и мне нужно отобразить вращение. Sharpgl (компонент сцены). < /P>
Я попытался написать «эффект», который (на данный момент) контролируется с помощью 3 отдельных треков, но это будут данные датчиков. Opengl).
Я попытался повернуть объект, используя кватернионы, умножая их и генерируя матрицу вращения, а затем применяя gl.multmatrix (transformmatrix.ascolumnmajorarray) .
Я также попробовал gl.rotate (anglex, 1, 0, 0) и zrotate (anglex, 1, 0, 0) . Оси).
В зависимости от порядка умножения кватерниона или операторов gl.rotate (...) , я бы заставил объект повернуть о локальной оси (первая), что -то странное (второе) и «Мир» третий. Например, если бы я сделал это с Quaternions qx*qy*qz и получил из этого матрицу вращения, я бы получил (я думаю) вращения о локальном x, «произвольном» y и осях мира z.
. Событие Scroll Trackbar , вся сцена вращается по осям x, y и z и в этом порядке, и именно так, как я ожидал, что вращение произойдет. Так что, если бы я (гипотетически) хотел развлечь комнату вокруг объекта, вся комната тоже повернулась, что я не хочу. < /P>
В конце дня я хочу свой объект ( в терминах Sharpgl), чтобы повернуть вокруг своих собственных оси (или о осях «мира», но будьте последовательны).
Я поместил проект в свой Dropbox. /> вращайте x, y и z, скажем, на 45 градусов в этом порядке. Кажется, все работает отлично. Теперь поверните x, y и z дальше на 30 или около того градусов, попытайтесь визуализировать о том, какая ось происходит вращение, когда вы вращаетесь ... < /p>
x, кажется, всегда мир, и z, кажется, всегда локально, в то время как y - это то, что между ними, изменяется порядок, меняет методы, что я хочу, что я буду вмещать. вся сцена). Пробовал кватернионы, и они дают тот же результат, поэтому Я должен делать что -то не так.>

Подробнее здесь: https://stackoverflow.com/questions/300 ... lobal-axes

Вернуться в «C#»