Я новичок в c ++ и openGL, поэтому имейте в виду, что мои навыки кодирования не на высшем уровне, но я быстро учусь.
Итак, поскольку моя любимая головоломка — это кубик Рубика, я решил раскрыть свои творческие способности, поэтому сейчас я делаю кубик Рубика в 3D и представляю каждый кусочек кубика (26 штук без основного) по отдельности, используя четырехугольники. использовать текстуры в будущем после того, как я научусь их использовать)
Прямо сейчас я могу вращать камеру, используя glRotatef, и вижу весь куб.
Основная проблема, на которую я наткнулся, — это вращение каждой грани по отдельности, а также отслеживание кубов, чтобы определить, к каким граням они теперь принадлежат, а также определить, будут ли они затронуты, если грань повернута.
На данный момент я понял, что использование glRotatef не принесет пользы в продвижении вперед, поэтому я искал вокруг и узнал о Кватернионы поэтому я прочитал кучу учебных пособий о них, но я не знаю, как их реализовать и как их использовать.
Это последний урок, который я читал:
http://www.cprogramming.com/tutorial/3d/quaternions.html
Мой запрос будет очень простым примером того, как его реализовать и использовать в моей функции отображения.
Что касается отслеживания кубов, я сейчас думаю об использовании 6 логических значений для каждой фигуры, чтобы определить их положение через центральные фигуры.
Если у вас есть другие идеи или концепции по управлению вращением лица, пожалуйста, расскажите об этом.
С уважением,,
Основная проблема, на которую я наткнулся, — это вращение каждой грани по отдельности, а также отслеживание кубов, чтобы определить, к каким граням они теперь принадлежат, а также определить, будут ли они затронуты, если грань повернута.
Вот и весь ваш алгоритм. То, что вы можете сделать, это иметь структуру данных, которая содержит 6 «лиц». Эти грани являются сторонами куба. Каждое лицо будет иметь указатель на NorthFace, SouthFace, EastFace и WestFace. Также каждая грань будет содержать 3 ряда по 3 кубика столбцов. Теперь вы должны выполнить необходимую операцию, чтобы переместить лицо вверх и так далее.
Других решений пока нет …