C ++ Вращающийся куб в координатах (без рисования)

Я искал это довольно долгое время без каких-либо результатов, пытался выяснить математику для этого сам в течение недели +.

Моя цель — установить положение курсора (ов) таким образом, чтобы он формировал вращающийся куб так, как это делал бы граничный блок вращающегося куба OpenGL.

Поскольку OpenGL имеет встроенную функцию поворота, я не могу к этому приспособиться.
Мне просто интересно, есть ли у кого-нибудь идеи, как бы я поступил по этому поводу.
Если вам интересно, в чем смысл этого, то в каждом созданном кадре (точке вращения куба) есть функция удаления чего-либо нарисованного в MsPaint, а затем начинаются рисовать следующие позиции, в основном, для создания нарисованного вращающегося куба.

0

Решение

Если вы пытаетесь вращать куб в C без помощи какой-либо специализированной библиотеки, вы должны использовать матричные операции для преобразования координат.

  1. Вы должны получить матрицу ротации (Давайте назовем это M)
  2. Вы должны умножить M в ваш вектор координат — результат новый
    координаты.

Например, для двумерного вращения (f — угол поворота, + — направление вращения):

|cos f +-sin f| |x|   |x'|
|             | | | = |  |
|+-sin f cos f| |y|   |y'|

для трехмерного вращения вы должны использовать матрицу 3х3. Кроме того, вы должны ось вращения, в зависимости от этого вы должны выбрать матрицу M:

Mx (вращаться вокруг оси х):

|1      0       0 ||x|   |x'|
|0   cos f  -sin f||y| = |y'|
|0   sin f   cos f||z|   |z'|

мой (вращаться вокруг оси y):

|cos f      0      sin f ||x|   |x'|
| 0         1      0     ||y| = |y'|
|-sin f     0      cos f ||z|   |z'|

магнитный азимут (вращаться вокруг оси z):

| cos f   -sin f    0    ||x|   |x'|
| sin f   cos f     0    ||y| = |y'|
| 0        0        1    ||z|   |z'|
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]