В настоящее время я программирую основной дисплей полета с использованием Python и OpenGL. Поскольку у меня нулевой опыт работы с OpenGL (и небольшой опыт программирования в целом), мне сложно реализовать простейшую реализацию функций, но до сих пор я дошел до этого:
Моя проблема сейчас состоит в том, чтобы повернуть искусственный горизонт вокруг центральной точки области просмотра (400x240) в соответствии с данными поворота. Мое окно просмотра имеет размер 800x480 с квадратом, представляющим искусственный горизонт размером 1000x2880.
Отображение данных шага легко, потому что 1 градус равен 8 пикселям на текстуре окна просмотра / горизонта.
Numbers.p_offset = -Data.pitch*8
, который я могу просто добавить ко всем четырем y-координатам четырехугольника.
def horizon():
glBindTexture(GL_TEXTURE_2D, horizontexture)
glEnable(GL_BLEND)
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)
glEnable(GL_TEXTURE_2D)
glColor4f(1, 1, 1, 1)
glBegin(GL_QUADS)
glTexCoord2f(0, 1); glVertex2f(-100, -1200+Numbers.p_offset)
glTexCoord2f(1, 1); glVertex2f(900, -1200+Numbers.p_offset)
glTexCoord2f(1, 0); glVertex2f(900, 1680+Numbers.p_offset)
glTexCoord2f(0, 0); glVertex2f(-100, 1680+Numbers.p_offset)
glEnd()
glDisable(GL_TEXTURE_2D)
Что непросто, так это отобразить данные поворота (от -180 ° до 180 °), поскольку изменение поворота изменит координаты x- и y четырехъядерный. Сначала необходимо применить смещение шага (чтобы вертикальная центральная линия квадрата находилась в центре окна просмотра), а затем вращение, соответствующее вращению. Я не могу понять математику того, как вычислить смещение, которое может вызвать рулон, поэтому я ищу решение, как это сделать с помощью некоторых функций OpenGL, о которых я еще не знаю.
Все уроки и вопросы / ответы, которые я нашел, были конкретно о том, как вращать четырехугольник вокруг его собственной центральной точки, а не другой координаты.
Вопрос: Как можно повернуть четырехугольник вокруг определенной координаты в ортогональной проекции в OpenGL и Python?