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

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

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

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

OPENGL 4, GLFW, GLAD, GLM
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.04.2018, 07:56
Ответы с готовыми решениями:

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

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

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

13
 Аватар для qppq
145 / 89 / 23
Регистрация: 31.08.2016
Сообщений: 780
Записей в блоге: 2
12.04.2018, 08:33
если координата хранится в переменной, то ее можно считать оттуда в любой момент времени?
0
1917 / 779 / 109
Регистрация: 01.10.2012
Сообщений: 4,372
Записей в блоге: 2
12.04.2018, 08:38
Ну просто множите исходные точки (центр или углы) на эту матрицу, создавать еще вектора незачем. Странный вопрос, наверное я чего-то не понял
0
с++
1282 / 523 / 225
Регистрация: 15.07.2015
Сообщений: 2,562
12.04.2018, 09:04
вот вам пример сдерите алгоритм от туда:
Вложения
Тип файла: rar Bounce.rar (23.7 Кб, 7 просмотров)
0
с++
1282 / 523 / 225
Регистрация: 15.07.2015
Сообщений: 2,562
12.04.2018, 09:05
потом просто текстурку нацепите и будет как у DVD это просто
0
7970 / 2920 / 489
Регистрация: 05.10.2013
Сообщений: 7,820
Записей в блоге: 209
12.04.2018, 10:51
B1ZON,
Создайте класс Rectangle, в котором будут поля для хранения: x, y, width и height и метод Draw().
Тогда вы сможете в любой момент узнать и изменить координаты экземпляров класса Rectangle.
0
0 / 0 / 1
Регистрация: 01.05.2016
Сообщений: 18
12.04.2018, 20:01  [ТС]
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
7970 / 2920 / 489
Регистрация: 05.10.2013
Сообщений: 7,820
Записей в блоге: 209
12.04.2018, 20:54
Вы меня немного запутали с приведённым шейдером. Вы хотите из этого шейдера прочитать, что хранится в переменной aPos? Если да, то этот шейдер, после вызова glDrawArrays или glDrawElements, отработает для каждой вершины, которые хранятся в VBO. Вы никак не можете считать aPos. Тем более, что значение в VBO вам и так известны, потому что вы туда их загружаете. Вы писали в начале, что матрица у вас есть. Почему вы не привели её в шейдере? Как вы создаёте матрицу и какие данные в неё загружаете?
0
510 / 272 / 60
Регистрация: 14.12.2010
Сообщений: 548
12.04.2018, 20:59
Цитата Сообщение от B1ZON Посмотреть сообщение
Знаю, что можно вводить данные путем юниформ.
А как вывести то?
Ты всё перепутал местами:
OpenGL - это библиотека вывода информации.
Основная часть - это твоя программа, которая её снабжает информацией.
Здесь должен работать принцип "вывел и забыл". Но есть нюансы.
Цитата Сообщение от B1ZON Посмотреть сообщение
Просто не могу свободно жить, когда у нас есть копии переменных, если до оригинала - рукой подать!
Как ты будешь отслеживать какая функция изменила твой оригинал,
если все к нему имеют доступ на изменение?
Так ты никогда не отладишь свою программу.

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

Изучай паттерн MVC.
1
с++
1282 / 523 / 225
Регистрация: 15.07.2015
Сообщений: 2,562
12.04.2018, 21:32
Цитата Сообщение от B1ZON Посмотреть сообщение
Просто не могу свободно жить, когда у нас есть копии переменных, если до оригинала - рукой подать!
не понятно что хотите, а мой пример не подходит?
0
0 / 0 / 1
Регистрация: 01.05.2016
Сообщений: 18
15.04.2018, 17:15  [ТС]
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
 Аватар для Fulcrum_013
2083 / 1574 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
15.04.2018, 17:18
B1ZON, Ни то ни другое. Рисуют в САПР. В результате поучают буфера точек и индексов которые закидывают в видяху.
0
1917 / 779 / 109
Регистрация: 01.10.2012
Сообщений: 4,372
Записей в блоге: 2
15.04.2018, 18:30
Цитата Сообщение от B1ZON Посмотреть сообщение
Или все же они пишут все наголо?(Тоесть прописывают все буферы и рисуют через команды openGL)?
В принципе - да. Хотя "наголо" здесь - совсем не то слово
0
7970 / 2920 / 489
Регистрация: 05.10.2013
Сообщений: 7,820
Записей в блоге: 209
15.04.2018, 19:40
Цитата Сообщение от B1ZON Посмотреть сообщение
uniform mat4 trans;
Допустим вы загрузили в VBO два 3D-объекта, к примеру, модель дерева и ящика, созданные в каком-нибудь пакете моделирования, или найденные в интернете. Мы знаете, что индексы дерева хранятся с такого индекса до такого, и индексы ящика с такого индекса по такой. Вам нужно будет вызывать glDrawElements два раза: один раз для дерева и один для ящика. У дерева есть координата (x, y) и у ящика есть координата (x, y). Перед вызовом glDrawElements для дерева вы передаёте в переменную "uniform mat4 trans" координату дерева, а для ящика перед glDrawElements ящика передаёте в "uniform mat4 trans" координату ящика.

Добавлено через 2 минуты
Цитата Сообщение от B1ZON Посмотреть сообщение
2)И если вам не сложно можно еще каких-то ресурсов по OGL которыми вы пользуетесь/овались?
Я начинал разбираться с шейдерами по этой книге.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.04.2018, 19:40
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Организация сетей в Kubernetes и эффективное развертывание
Mr. Docker 14.04.2025
Сетевая инфраструктура Kubernetes представляет собой сложную, но хорошо спроектированную систему, которая позволяет контейнерам взаимодействовать между собой и с внешним миром. За кажущейся простотой. . .
Многопоточность в Rust: Fearless concurrency и практические примеры
golander 14.04.2025
Многопоточное программирование связано с рядом известных проблем. Наиболее распространенные из них — гонки данных (data races), взаимные блокировки (deadlocks) и условия гонки (race conditions). Эти. . .
Списки и кортежи в Python: различия, особенности, применение
py-thonny 13.04.2025
Python славится своей гибкостью при работе с данными. В арсенале языка есть две основные последовательные структуры данных, которые программисты используют ежедневно — списки и кортежи. Эти структуры. . .
Middleware в ASP.NET Core
UnmanagedCoder 13.04.2025
В ASP. NET Core термин "middleware" занимает особое место. Что же это такое? Middleware представляет собой программные компоненты, которые формируют конвейер обработки HTTP-запросов в приложении. . . .
Таблицы лута в Unity с MinMaxCurve и AnimationCurve
GameUnited 12.04.2025
Создание сбалансированного лута в играх — задача не из простых. Разработчики постоянно ищут способы настройки систем выпадения предметов, которые будут одновременно справедливыми для игроков и. . .
std::expected в C++: Управление ошибками
bytestream 12.04.2025
Обработка ошибок всегда была важной и одновременно сложной задачей в программировании на C++. На протяжении долгого времени разработчики использовали различные подходы: возвращаемые коды ошибок,. . .
Nullable типы и операторы объединения null в C#
UnmanagedCoder 12.04.2025
Многие шутят, что null — это миллиардная ошибка в программировании. И в этой шутке только доля шутки. Тони Хоар, создатель null-ссылки, сам назвал её своей "ошибкой на миллиард долларов". Почему?. . .
Аутентификация и авторизация JWT в микросервисах с API Gateway
stackOverflow 12.04.2025
В традиционных монолитных приложениях безопасность часто реализуется как единый защитный периметр - пользователь проходит аутентификацию один раз, после чего получает доступ ко всем функциям системы. . . .
TypeScript: Интерфейсы vs Типы
run.dev 11.04.2025
Современная разработка на JavaScript сталкивается с множеством проблем при масштабировании проектов. Типизация кода стала хорошим инструментом, помогающим избежать ошибок во время выполнения,. . .
Управление топиками и разделами Kafka
Javaican 11.04.2025
Apache Kafka — распределенная платформа потоковой передачи данных, которая стала стандартом для построения высоконагруженных систем обмена сообщениями. В современной архитектуре микросервисов,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер