0 / 0 / 1
Регистрация: 01.05.2016
Сообщений: 18
|
|
Как узнать координаты точек при движении прямоугольника?12.04.2018, 07:56. Показов 894. Ответов 13
Метки нет Все метки)
(
У меня есть прямоугольник, движение которого я могу задавать в разных направлениях через кнопки управления умножая на матрицу. Изначальные координаты мне известны. Но как достать координату в любой момент времени? Вся задача - это сделать заставку типа DVD-video(https://www.youtube.com/watch?v=uy34b76mSNA). Есть идея создать 4 вектора(т. к. у прямоугольника четыре вершины) и умножать их на матрицу одновременно с векторами позиций этих четырех точек, таким образом у нас будет копия четырехугольника. Но чувствую, что есть намного проще метод, который я, увы, не нашел.
OPENGL 4, GLFW, GLAD, GLM
0
|
12.04.2018, 07:56 | |
Ответы с готовыми решениями:
13
Как определить координаты точек пересечения прямоугольника и круга
Как узнать координаты точек на линии тренда? |
![]() |
|
12.04.2018, 08:33 | |
если координата хранится в переменной, то ее можно считать оттуда в любой момент времени?
0
|
12.04.2018, 08:38 | |
Ну просто множите исходные точки (центр или углы) на эту матрицу, создавать еще вектора незачем. Странный вопрос, наверное я чего-то не понял
![]()
0
|
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-шейдер:
А как вывести то? Просто не могу свободно жить, когда у нас есть копии переменных, если до оригинала - рукой подать!
0
|
12.04.2018, 20:54 | |
Вы меня немного запутали с приведённым шейдером. Вы хотите из этого шейдера прочитать, что хранится в переменной aPos? Если да, то этот шейдер, после вызова glDrawArrays или glDrawElements, отработает для каждой вершины, которые хранятся в VBO. Вы никак не можете считать aPos. Тем более, что значение в VBO вам и так известны, потому что вы туда их загружаете. Вы писали в начале, что матрица у вас есть. Почему вы не привели её в шейдере? Как вы создаёте матрицу и какие данные в неё загружаете?
0
|
510 / 272 / 60
Регистрация: 14.12.2010
Сообщений: 548
|
|
12.04.2018, 20:59 | |
Ты всё перепутал местами:
OpenGL - это библиотека вывода информации. Основная часть - это твоя программа, которая её снабжает информацией. Здесь должен работать принцип "вывел и забыл". Но есть нюансы. Как ты будешь отслеживать какая функция изменила твой оригинал, если все к нему имеют доступ на изменение? Так ты никогда не отладишь свою программу. Инкапсуляция нужна, поэтому и нужны копии. Изучай паттерн MVC.
1
|
0 / 0 / 1
Регистрация: 01.05.2016
Сообщений: 18
|
||||||
15.04.2018, 17:15 [ТС] | ||||||
8Observer8, прошу прощения. Вы правы, я там не привел юниформу и умножение на нее. Видимо, вот так:
1)Вопрос заключаеться в том, что люди пишущие OpenGL-код в режиме ядра, как они взаимодействуют с OpenGL? Пишут свои класы для быстрого создания всяких фигур шейдеров и т.д. Или все же они пишут все наголо?(Тоесть прописывают все буферы и рисуют через команды openGL)? Очень интерестно как новичку. 2)И если вам не сложно можно еще каких-то ресурсов по OGL которыми вы пользуетесь/овались?
0
|
15.04.2018, 18:30 | |
0
|
15.04.2018, 19:40 | |
Допустим вы загрузили в VBO два 3D-объекта, к примеру, модель дерева и ящика, созданные в каком-нибудь пакете моделирования, или найденные в интернете. Мы знаете, что индексы дерева хранятся с такого индекса до такого, и индексы ящика с такого индекса по такой. Вам нужно будет вызывать glDrawElements два раза: один раз для дерева и один для ящика. У дерева есть координата (x, y) и у ящика есть координата (x, y). Перед вызовом glDrawElements для дерева вы передаёте в переменную "uniform mat4 trans" координату дерева, а для ящика перед glDrawElements ящика передаёте в "uniform mat4 trans" координату ящика.
Добавлено через 2 минуты Я начинал разбираться с шейдерами по этой книге.
0
|
15.04.2018, 19:40 | ||||||
Помогаю со студенческими работами здесь
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 — распределенная платформа потоковой передачи данных, которая стала стандартом для построения высоконагруженных систем обмена сообщениями. В современной архитектуре микросервисов,. . .
|