Russian Qt Forum
Ноябрь 22, 2024, 19:42
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Программирование
>
Алгоритмы
>
Градиент (постановка)
Страниц: [
1
]
2
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Градиент (постановка) (Прочитано 13057 раз)
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Градиент (постановка)
«
:
Сентябрь 28, 2015, 12:45 »
Добрый день
Часто слышу, что якобы "задача поставлена нечетко", "не можете сформулировать проблему" и все такое. А попробуем "от противного" - вот задача которую я действительно не могу сформулировать. Что хочет юзер достаточно ясно, а вот что мне делать нет. См аттач
Есть поверхность (для простоты плоскость) на которой лежит N брусков. Все это полигонные 3D объекты. Юзер хочет управлять ориентацией брусков, напр сделать так чтобы все они развернулись к центру (левая картинка = ожидаемый рез-т). Для этого он берет кисточку и рисует круг на плоскости (правая картинка). Дальше в его представлении умная (моя) программа должна сделать все автоматычно.
Детали (для взыскательных постановщиков). Ну цвет задается в вертексах. Бруски не меняют своей позиции но могут быть повернуты вокруг своих центров. Что еще? Не вижу, пожалуй все.
И вот я не вижу как сделать то что хочет юзер. Подскажите
Спасибо
Записан
Racheengel
Джедай : наставник для всех
Offline
Сообщений: 2679
Я работал с дискетам 5.25 :(
Re: Градиент (постановка)
«
Ответ #1 :
Сентябрь 28, 2015, 15:10 »
А что это должно быть "физически"? Какое-нибудь магнитное поле?
Записан
What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.
COVID не волк, в лес не уйдёт
Bepec
Гость
Re: Градиент (постановка)
«
Ответ #2 :
Сентябрь 28, 2015, 15:36 »
Задача поставлена неясно
Разворот брусков к центру. Центру чего?
Пользователь рисует круг на плоскости. Для чего?
Программа должна сделать автоматычно. Что сделать?
И каким макаром связан градиент и положение брусков?
Есть данные для начала, нет описания результата. Что в результате то получиться должно?
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Градиент (постановка)
«
Ответ #3 :
Сентябрь 28, 2015, 15:51 »
Цитата: Racheengel от Сентябрь 28, 2015, 15:10
А что это должно быть "физически"? Какое-нибудь магнитное поле?
Ну а почему нет? Вполне удачная аналогия. Но она необязательна. Пользователь задает (рисует) градиент в и рассчитывает использовать его вектора/направления, а для чего - уже его дело. Ну вот напр для поворота/ориентации
Цитата: Bepec от Сентябрь 28, 2015, 15:36
Задача поставлена неясно
Разворот брусков к центру. Центру чего?
Пользователь рисует круг на плоскости. Для чего?
Программа должна сделать автоматычно. Что сделать?
И каким макаром связан градиент и положение брусков?
Есть данные для начала, нет описания результата. Что в результате то получиться должно?
Боже, ну почему при чтении Ваших ответов в моей памяти сразу оживают Бивис и Батхед?
Ну как можно не сообразить чисто "по картинкам", даже не читая? Все, больше нет сил Вам отвечать
Записан
Bepec
Гость
Re: Градиент (постановка)
«
Ответ #4 :
Сентябрь 28, 2015, 16:21 »
Не могу по мутному описанию вообразить тот самый вариант, что подразумеваете в глубинах разума вы
Записан
Racheengel
Джедай : наставник для всех
Offline
Сообщений: 2679
Я работал с дискетам 5.25 :(
Re: Градиент (постановка)
«
Ответ #5 :
Сентябрь 28, 2015, 16:27 »
А если пользователь нарисует 2 кружка, к какому центру должны развернуться бруски? К сильнейшему или к ближайшему?
Записан
What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.
COVID не волк, в лес не уйдёт
Racheengel
Джедай : наставник для всех
Offline
Сообщений: 2679
Я работал с дискетам 5.25 :(
Re: Градиент (постановка)
«
Ответ #6 :
Сентябрь 28, 2015, 18:38 »
В общем, если бруски не перемещаются по полю, а только вращаются, и вращение должно зависеть только от локального градиента (который находится в Bounding Box бруска, ну т.е. не бокс, а окружность, описывающая брусок), то я бы разбивал для каждого бруска его описывающую окружность на сегменты, скажем, с шагом в 1 градус и искал бы наиболее "сильный" градиент между началом и концом сегмента. Ну и соотв-но разворачивал бы брусок вдоль него. Но это только если в виду имеется именно это...
Записан
What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.
COVID не волк, в лес не уйдёт
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Градиент (постановка)
«
Ответ #7 :
Сентябрь 29, 2015, 04:47 »
Цитата: Racheengel от Сентябрь 28, 2015, 16:27
А если пользователь нарисует 2 кружка, к какому центру должны развернуться бруски? К сильнейшему или к ближайшему?
Я рассказал все что получил от пользователя. Да, задача еще не поставлена (см название топика).
Думается к ближайшему, существует градиент в точке, он локален. Там где градиент = 0 (черный цвет), он не должен применяться вообще (ну или "нечего применять"), там бруски остаются в исходном положении. Каких-то др разумных вариантов не видно, поэтому уточнять это у пользователя не нужно.
Цитата: Racheengel от Сентябрь 28, 2015, 18:38
В общем, если бруски не перемещаются по полю, а только вращаются, и вращение должно зависеть только от локального градиента (который находится в Bounding Box бруска, ну т.е. не бокс, а окружность, описывающая брусок), то я бы разбивал для каждого бруска его описывающую окружность на сегменты, скажем, с шагом в 1 градус и искал бы наиболее "сильный" градиент между началом и концом сегмента. Ну и соотв-но разворачивал бы брусок вдоль него. Но это только если в виду имеется именно это...
Плоскость - 3D модель, в данном случае состоит из квадратиков(полигонов), см сетку на правой картинке. Цвет задан в вертексах, это OpenGL его рисует плавно, на самом деле данные дискретны. Поэтому совершенно не понял причем здесь Bounding Box.
Записан
qate
Супер
Offline
Сообщений: 1177
Re: Градиент (постановка)
«
Ответ #8 :
Сентябрь 29, 2015, 08:38 »
из постановки задачи можно понять, что бруски надо развернуть одним из концов к центру круга, вращая вокруг их центра - тут вроде все ясно как делать
если брусок не попал в круг полностью - не ккрутить его
если попал частично - повернуть частично
пользователя заставить подписать это "тз" и делать )
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Градиент (постановка)
«
Ответ #9 :
Сентябрь 29, 2015, 09:03 »
Цитата: qate от Сентябрь 29, 2015, 08:38
из постановки задачи можно понять, что бруски надо развернуть одним из концов к центру круга, вращая вокруг их центра - тут вроде все ясно как делать
Да, с этим проблем нет
Цитата: qate от Сентябрь 29, 2015, 08:38
если брусок не попал в круг полностью - не ккрутить его
если попал частично - повернуть частично
пользователя заставить подписать это "тз" и делать )
Тогда выходит круг "boolean", напр почти черный круг и тот что на рисунке выше - дадут одинаковый рез-т. Вообще круг здесь для примера, юзер может намазюкать все что хочет. Попал полностью или как - то для бруска просто, а для др фигуры (в общем виде) геморрой порядочный. Лучше обойтись центром который у фигуры всегда есть. Правда тогда хз как вычислять "частично".
С абстракцией напряженка. Круг - значит только круг, брусок - только брусок
Но все равно, хоть какие-то мысли есть - уже хорошо
Записан
Racheengel
Джедай : наставник для всех
Offline
Сообщений: 2679
Я работал с дискетам 5.25 :(
Re: Градиент (постановка)
«
Ответ #10 :
Сентябрь 30, 2015, 10:56 »
Цитировать
Поэтому совершенно не понял причем здесь Bounding Box.
Ну я как рассуждал. Есть брусок, который может вращаться только вокруг своего центра. Значит, максимальная область "воздействия" - это описанная им окружность диаметром в длину бруска.
Пока не сказано иного, принимаем, что брусок разворачивается вдоль отрезка, который представляет собой максимальный градиент, скажем, "силы". Т.е. разность значений градиента в начале и конце отрезка - максимальна.
Поэтому мы можем разбить окружность на Х диаметров с шагом в N градусов и посчитать градиент каждого полученного отрезка. Затем выбрать максимальный и расположить брусок вдоль него.
Записан
What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.
COVID не волк, в лес не уйдёт
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Градиент (постановка)
«
Ответ #11 :
Сентябрь 30, 2015, 11:27 »
Цитата: Racheengel от Сентябрь 30, 2015, 10:56
Ну я как рассуждал. Есть брусок, который может вращаться только вокруг своего центра. Значит, максимальная область "воздействия" - это описанная им окружность диаметром в длину бруска.
На мой взгляд - не очень естественно. Не забить ли нам на размеры объекта и использовать только его центр (точку)? Ведь круг в примере намного больше бруска, если наоборот то по-любому смысла нет. Кобыле-реализации станет явно легче
Но тогда возникает вопрос: а что считать "степенью воздействия"?
Записан
Racheengel
Джедай : наставник для всех
Offline
Сообщений: 2679
Я работал с дискетам 5.25 :(
Re: Градиент (постановка)
«
Ответ #12 :
Сентябрь 30, 2015, 11:39 »
Ну а если мы возьмем только центр - как по одной точке градиент вычислять??
И как должен быть ориентирован брусок, если вдруг он попадет точно в центр зеленого круга?
Записан
What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.
COVID не волк, в лес не уйдёт
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Градиент (постановка)
«
Ответ #13 :
Октябрь 01, 2015, 07:27 »
Цитата: Racheengel от Сентябрь 30, 2015, 11:39
Ну а если мы возьмем только центр - как по одной точке градиент вычислять??
И как должен быть ориентирован брусок, если вдруг он попадет точно в центр зеленого круга?
Ну ясно, "задам вопрос, поддержу разговор, а там видно будет"
Это нормально, корректно - но мне это как-то неинтересно. Хотелось бы получить мешок идей (пусть спорных), а не растолковывать что такое градиент.
Ладно, сейчас заканчиваю (отлаживаюсь), потом, если интересно, расскажу. (очередной раз обделался с математикой).
Записан
Racheengel
Джедай : наставник для всех
Offline
Сообщений: 2679
Я работал с дискетам 5.25 :(
Re: Градиент (постановка)
«
Ответ #14 :
Октябрь 01, 2015, 09:18 »
Дык я вроде бы и предлагаю -ориентировать бруски по их локальным градиентам. Все равно других вариантов пока я не вижу.
Записан
What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.
COVID не волк, в лес не уйдёт
Страниц: [
1
]
2
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...