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