Я искал это довольно долгое время без каких-либо результатов, пытался выяснить математику для этого сам в течение недели +.
Моя цель — установить положение курсора (ов) таким образом, чтобы он формировал вращающийся куб так, как это делал бы граничный блок вращающегося куба OpenGL.
Поскольку OpenGL имеет встроенную функцию поворота, я не могу к этому приспособиться.
Мне просто интересно, есть ли у кого-нибудь идеи, как бы я поступил по этому поводу.
Если вам интересно, в чем смысл этого, то в каждом созданном кадре (точке вращения куба) есть функция удаления чего-либо нарисованного в MsPaint, а затем начинаются рисовать следующие позиции, в основном, для создания нарисованного вращающегося куба.
Если вы пытаетесь вращать куб в C без помощи какой-либо специализированной библиотеки, вы должны использовать матричные операции для преобразования координат.
Например, для двумерного вращения (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'|
Других решений пока нет …