Форум программистов, компьютерный форум, киберфорум
OpenGL
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
0 / 0 / 1
Регистрация: 01.05.2016
Сообщений: 18
1

Как узнать координаты точек при движении прямоугольника?

12.04.2018, 07:56. Показов 752. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
У меня есть прямоугольник, движение которого я могу задавать в разных направлениях через кнопки управления умножая на матрицу. Изначальные координаты мне известны. Но как достать координату в любой момент времени? Вся задача - это сделать заставку типа DVD-video(https://www.youtube.com/watch?v=uy34b76mSNA). Есть идея создать 4 вектора(т. к. у прямоугольника четыре вершины) и умножать их на матрицу одновременно с векторами позиций этих четырех точек, таким образом у нас будет копия четырехугольника. Но чувствую, что есть намного проще метод, который я, увы, не нашел.

OPENGL 4, GLFW, GLAD, GLM
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.04.2018, 07:56
Ответы с готовыми решениями:

Как определить координаты точек пересечения прямоугольника и круга
Всем привет Как решить такую задачку....на первый взгляд вроде лёгкая,но как только начал...

Как узнать координаты точек Q1 и Q2?
К примеру есть три точки: A(1; 1), B(4,5; 2), C(6; 5,5). Как узнать координаты Q1 и Q2, если скажем...

Как узнать координаты точек на линии тренда?
был построен график, для прогнозирования использовалась линия тренда (полиномиальная), прогноз...

Найти координаты точек и диагональ прямоугольника
нуждаюсь в помощи по задаче: Вершины прямоугольника. На плоскости заданы координаты двух...

13
144 / 88 / 23
Регистрация: 31.08.2016
Сообщений: 775
12.04.2018, 08:33 2
если координата хранится в переменной, то ее можно считать оттуда в любой момент времени?
0
1824 / 732 / 99
Регистрация: 01.10.2012
Сообщений: 3,745
12.04.2018, 08:38 3
Ну просто множите исходные точки (центр или углы) на эту матрицу, создавать еще вектора незачем. Странный вопрос, наверное я чего-то не понял
0
с++
1282 / 523 / 225
Регистрация: 15.07.2015
Сообщений: 2,562
12.04.2018, 09:04 4
вот вам пример сдерите алгоритм от туда:
Вложения
Тип файла: rar Bounce.rar (23.7 Кб, 7 просмотров)
0
с++
1282 / 523 / 225
Регистрация: 15.07.2015
Сообщений: 2,562
12.04.2018, 09:05 5
потом просто текстурку нацепите и будет как у DVD это просто
0
5158 / 2770 / 465
Регистрация: 05.10.2013
Сообщений: 7,321
Записей в блоге: 147
12.04.2018, 10:51 6
B1ZON,
Создайте класс Rectangle, в котором будут поля для хранения: x, y, width и height и метод Draw().
Тогда вы сможете в любой момент узнать и изменить координаты экземпляров класса Rectangle.
0
0 / 0 / 1
Регистрация: 01.05.2016
Сообщений: 18
12.04.2018, 20:01  [ТС] 7
8Observer8, Извините, с класом понимаю, но не могу поверить, что в ГЛ нет такой возможности. Вот у меня есть vertex-шейдер:
glSlang
1
2
3
4
5
6
#version 330 core
layout(location = 0) in vec3 aPos;
 
void main() {
     gl_Position = vec4(aPos, 1.0f);
}
Знаю, что можно вводить данные путем юниформ.
А как вывести то?
Просто не могу свободно жить, когда у нас есть копии переменных, если до оригинала - рукой подать!
0
5158 / 2770 / 465
Регистрация: 05.10.2013
Сообщений: 7,321
Записей в блоге: 147
12.04.2018, 20:54 8
Вы меня немного запутали с приведённым шейдером. Вы хотите из этого шейдера прочитать, что хранится в переменной aPos? Если да, то этот шейдер, после вызова glDrawArrays или glDrawElements, отработает для каждой вершины, которые хранятся в VBO. Вы никак не можете считать aPos. Тем более, что значение в VBO вам и так известны, потому что вы туда их загружаете. Вы писали в начале, что матрица у вас есть. Почему вы не привели её в шейдере? Как вы создаёте матрицу и какие данные в неё загружаете?
0
510 / 272 / 60
Регистрация: 14.12.2010
Сообщений: 548
12.04.2018, 20:59 9
Цитата Сообщение от B1ZON Посмотреть сообщение
Знаю, что можно вводить данные путем юниформ.
А как вывести то?
Ты всё перепутал местами:
OpenGL - это библиотека вывода информации.
Основная часть - это твоя программа, которая её снабжает информацией.
Здесь должен работать принцип "вывел и забыл". Но есть нюансы.
Цитата Сообщение от B1ZON Посмотреть сообщение
Просто не могу свободно жить, когда у нас есть копии переменных, если до оригинала - рукой подать!
Как ты будешь отслеживать какая функция изменила твой оригинал,
если все к нему имеют доступ на изменение?
Так ты никогда не отладишь свою программу.

Инкапсуляция нужна, поэтому и нужны копии.

Изучай паттерн MVC.
1
с++
1282 / 523 / 225
Регистрация: 15.07.2015
Сообщений: 2,562
12.04.2018, 21:32 10
Цитата Сообщение от B1ZON Посмотреть сообщение
Просто не могу свободно жить, когда у нас есть копии переменных, если до оригинала - рукой подать!
не понятно что хотите, а мой пример не подходит?
0
0 / 0 / 1
Регистрация: 01.05.2016
Сообщений: 18
15.04.2018, 17:15  [ТС] 11
8Observer8, прошу прощения. Вы правы, я там не привел юниформу и умножение на нее. Видимо, вот так:
C
1
2
3
4
5
6
7
8
#version 330 core
layout(location = 0) in vec3 aPos;
 
uniform mat4 trans;
 
void main() {
     gl_Position = trans * vec4(aPos, 1.0f);
}
Сейчас это уже не важно. Я вот начал писать по вашему совету класы для разных фигур и их построения - для удобства.
1)Вопрос заключаеться в том, что люди пишущие OpenGL-код в режиме ядра, как они взаимодействуют с OpenGL? Пишут свои класы для быстрого создания всяких фигур шейдеров и т.д. Или все же они пишут все наголо?(Тоесть прописывают все буферы и рисуют через команды openGL)? Очень интерестно как новичку.
2)И если вам не сложно можно еще каких-то ресурсов по OGL которыми вы пользуетесь/овались?
0
2063 / 1542 / 168
Регистрация: 14.12.2014
Сообщений: 13,402
15.04.2018, 17:18 12
B1ZON, Ни то ни другое. Рисуют в САПР. В результате поучают буфера точек и индексов которые закидывают в видяху.
0
1824 / 732 / 99
Регистрация: 01.10.2012
Сообщений: 3,745
15.04.2018, 18:30 13
Цитата Сообщение от B1ZON Посмотреть сообщение
Или все же они пишут все наголо?(Тоесть прописывают все буферы и рисуют через команды openGL)?
В принципе - да. Хотя "наголо" здесь - совсем не то слово
0
5158 / 2770 / 465
Регистрация: 05.10.2013
Сообщений: 7,321
Записей в блоге: 147
15.04.2018, 19:40 14
Цитата Сообщение от B1ZON Посмотреть сообщение
uniform mat4 trans;
Допустим вы загрузили в VBO два 3D-объекта, к примеру, модель дерева и ящика, созданные в каком-нибудь пакете моделирования, или найденные в интернете. Мы знаете, что индексы дерева хранятся с такого индекса до такого, и индексы ящика с такого индекса по такой. Вам нужно будет вызывать glDrawElements два раза: один раз для дерева и один для ящика. У дерева есть координата (x, y) и у ящика есть координата (x, y). Перед вызовом glDrawElements для дерева вы передаёте в переменную "uniform mat4 trans" координату дерева, а для ящика перед glDrawElements ящика передаёте в "uniform mat4 trans" координату ящика.

Добавлено через 2 минуты
Цитата Сообщение от B1ZON Посмотреть сообщение
2)И если вам не сложно можно еще каких-то ресурсов по OGL которыми вы пользуетесь/овались?
Я начинал разбираться с шейдерами по этой книге.
0
15.04.2018, 19:40
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.04.2018, 19:40
Помогаю со студенческими работами здесь

Найти координаты двух угловых точек прямоугольника не симметричного осям координат
Даны координаты двух нижних угловых точек прямоугольника повернутого на угол alpha (А(x;y) B(x;y)),...

Вывести на экран номера и координаты точек, которые лежат внутри прямоугольника
Создать массив записей, содержащих информацию о 20-ти точках на координатной плоскости...

Программа, генерирующую координаты точек прямоугольника, равномерно заполненного точками и включающего заданную фигуру
Для каждой линии, ограничивающей область, составить уравнение y=fi(x). Проверить правильность...

Даны два круга, расположенных внутри прямоугольника. Найти координаты точек пересечения этих кругов, если они имеются.
Окружности Даны два круга, расположенных внутри прямоугольника. Найти координаты точек пересечения...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru