|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
|
| 17.01.2022, 13:39 | |
|
Может так:
Задаем расстояние угасания Z высоты точки поверхности distMax. Нормализуем расстояния от точки до кривой dist в диапазон от 0 до 1 normDist= dist/distMax и инвертируем расстояния invNormDist =1-dist Находим ближайшую точку на 3д кривой к текущей точке сетки и читаем ее высоту curveZ. Находим новую высоту точке сетки pointZ pointZ = curveZ*invNormDist Но это будет линейное уменьшение амплитуды а обычно берут некоторый плавный закон типа квадрата или параболы. Т.е. берут функцию от invNormDist. Тут кстати можно попробовать для эксперимента взять что-то простое типа модулировать синусоиду малой частоты синусоиду большой частоты чтобы закон был поинтересней это должно добавить колебания в Z высоты от расстояния. Вообще тут правильней по идее брать сумму двумерных шумов f(x,y) где есть изменения амплитуды и частоты шумов как функции от расстояния точки до кривой.
0
|
|
| 17.01.2022, 13:39 | |
|
Ответы с готовыми решениями:
50
Найти проекции скорости и координаты точки как функции от времени Найти коорд.проекции точки и составить уравнение сторон треугольника Найти проекции каждой точки заданного множества в пространстве на заданную прямую |
|
13 / 11 / 2
Регистрация: 07.05.2015
Сообщений: 418
|
|
| 17.01.2022, 14:07 [ТС] | |
|
Excalibur921, во во во, похоже на оно!
Только не карта расстояний. Мб правда эррозия. Тот алгоритм, который я ищу, с помощью него можно было бы рассчитать температуру в любой точке в окрестности НЕРАВНОМЕРНО нагретой проволоки. Вот что мне нужно
0
|
|
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
|||
| 17.01.2022, 14:22 | |||
|
IDW – Обратное Взвешенное Расстояние TIN – Нерегулярная Триангуляционная Сеть https://wiki.gis-lab.info/w/Кр... терполяция https://desktop.arcgis.com/ru/... ethods.htm В геологии есть там их по идее целая куча + наверняка есть софт и бесплатный для поиграть, и в мат пакетах может быть реализован.
0
|
|||
|
13 / 11 / 2
Регистрация: 07.05.2015
Сообщений: 418
|
|
| 18.01.2022, 06:33 [ТС] | |
|
Excalibur921, в моём случае нужно именно получить форму пробитого листа железа. Я ничего не говорил про линейность уменьшения амплитуды.
Одного расстояния недостаточно для корректной интерполяции. Вот на фото карта расстояний (слева от кривой - тёплые цвета, а справа - холодные. Градиент показывает расстояние) На втором фото находится карта параметра P, где P - это позиция проекции точки на кривую. (От 0 до 1) (0, если проекция лежит в начале кривой, 1 - если проекция лежит в конце кривой). На третьем фото находится место резкого перегиба кривой. Как видно на фото, в этом месте резкий переход цветов без гладкого градиента. Это значит, что если я проинтерполирую данные основываясь ТОЛЬКО на карте расстояний, карте параметра P и функции изменения максимальной амплитуды (определённой на всей кривой), то в этом месте я получу разрыв на выходной карте высот. Чтобы этого избежать, я планирую найти все перпендикуляры к точке из кривой и интерполировать значения между найденными точками начала перпендикуляров.
0
|
|
|
11133 / 7418 / 4010
Регистрация: 14.01.2014
Сообщений: 16,881
|
||
| 18.01.2022, 09:24 | ||
|
0
|
||
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
||
| 18.01.2022, 10:50 | ||
|
Честно говоря еще больше непонятно.
Уже 3 раз пишу, покажите карту высот которую хотите получить в итоге. Обычная карта высот это оттенки серого а кривую разлома сделать например красной. Пример рис пост 20, чем ярче пиксель тем он выше по Z. Или реальную фотку самого разлома на который ориентируетесь... но там может быть много лишней математики. На сайте шейдертоя есть вроде аналитический метод получения ближайшего расстояния до кривой Безье со знаком от произвольной точки в 2д…вы что численно находили расстояние до каждого пикселя? Ого… Где там брали формулы хз. https://www.shadertoy.com/view/ltXSDB “The distance to a weighted quadratic bezier is analytic but it requires solving a quartic which is difficult to do well because of low precision (see https://www.shadertoy.com/view/NtSGzy).”
0
|
||
|
13 / 11 / 2
Регистрация: 07.05.2015
Сообщений: 418
|
||
| 18.01.2022, 12:39 [ТС] | ||
|
Excalibur921, вечером отправлю картинку что хочу получить, если не забуду.
Добавлено через 3 минуты Excalibur921, там билинейная интерполяция цвета просто между точками, поэтому так всё красиво. Но в точках расчитано расстояние честно. sqrt(x*x + y*y)
0
|
||
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
|||
| 18.01.2022, 12:45 | |||
|
0
|
|||
|
13 / 11 / 2
Регистрация: 07.05.2015
Сообщений: 418
|
|
| 18.01.2022, 13:00 [ТС] | |
|
Excalibur921, технической - это значит нет железа, установленного DirectX или Opengl SDK, и вообще, при всём уважении это к задаче не имеет никакого отношения. Нет возможности - значит нет.
Добавлено через 3 минуты Excalibur921, карта расстояний - этого недостаточно для однозначной интерполяции. Я уже говорил - КАЖДАЯ точка кривой взвешена и имеет уникальный вес. Это значит, что карта расстояний, а также все перпендикуляры к кривой должны влиять на результат расчёта. Посмотрите сообщения с изображениями выше, пожалуйста. Там подробное описание проблемы и зачем мне нужны перпендикуляры.
0
|
|
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
||
| 18.01.2022, 14:15 | ||
|
Aycon, Причем тут шейдеры? Нужно найти сам источник формул, там в коментах книгу или pdf откуда они их вообще брали, там сказано requires solving a quartic это вроде предел для аналитических методов 4 степень уравнений, почему на вики нет описания готовых формул…это много где бы пригодилось. Как вы и хотели скорость и точность аналитически. Если разберетесь в коде там то взять куски что считают расстояние уже готовые.
Тогда похоже на задачу рендера неявных поверхностей, они все гладкие. Это объекты с некотором зарядом поля, аналог электрического поля. Вот тут есть несколько вариантов функций от расстояния с плавным угасанием. http://paulbourke.net/geometry/implicitsurf/ для Meta Balls “"a" is a scaling factor, "b" is the maximum distance a control primitive contributes to the field” r -это длинна перпендикуляра. a – наверно значение Z высоты в точке кривой куда падает перпенидикуляр. b - дистанция угасания поля. По идее значение высоты сетки поверхности это будет среднее от суммы таких функций. Еще как вариант ускорения если сделать очень плавное угасание поле заряда то может вообще заменить всю кривую последовательностью точек на ней с зарядом поля. Тогда и считать будет намного быстрей. Вот только и тут есть баг…плотность точек на параметрической кривой не постоянна и зависит от формы и размера.
0
|
||
|
13 / 11 / 2
Регистрация: 07.05.2015
Сообщений: 418
|
||
| 18.01.2022, 14:32 [ТС] | ||
|
Excalibur921, да, а ещё заряд (заряд, температура, амплитуда, да что угодно) - это не константа и она изменяется вдоль кривой. Во всех задачах на заряд подразумевается, что объект равномерно заряжен. В моём случае это не так. Как посчитать я уже знаю. Мне бы алгоритм чтобы найти сами перпендикуляры... а остальное то я посчитаю.
Добавлено через 3 минуты
0
|
||
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
|||
| 18.01.2022, 14:36 | |||
|
1
|
|||
|
13 / 11 / 2
Регистрация: 07.05.2015
Сообщений: 418
|
|
| 18.01.2022, 14:46 [ТС] | |
|
Excalibur921, спасибо, поищу после работы. Только я не очень хорошо понял что искать)
Excalibur921, Вот, на первом изображении кривая. Чем темнее цвет - тем ниже амплитуда (ниже правка, ниже вес кривой в этой точке, ниже температура или абстрактный заряд). Чем ближе к зелёному - тем выше. На втором фото изображён результат. Разница высот убывает на отдалении от кривой, в целом соответствует весу на кривой, на резких перегибах плавный градиент без разрывов. Не могу отобразить красивее, извините, не художник. И да, это похоже на график температуры для проволоки, у которой середину немного нагрели зажигалкой. Нигде на графике нет резких переходов, кроме как для точек слева/справа. Там то понятно, что разность будет большая.
0
|
|
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
||
| 18.01.2022, 20:13 | ||
|
0
|
||
|
13 / 11 / 2
Регистрация: 07.05.2015
Сообщений: 418
|
|
| 18.01.2022, 21:07 [ТС] | |
|
Excalibur921, Во-первых, я не могу использовать шейдер. Во-вторых я вижу разрыв на графике (горизонтальная линия на скрине). Третий раз - в этом и проблема, мне нужно несколько перпендикуляров, чтобы избавится от разрывов.
Excalibur921, Одного минимального расстояния мало - это факт. Неоспоримый факт.
0
|
|
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
||||
| 18.01.2022, 22:38 | ||||
|
Это можно использовать. Так для каждой кривой 2 степени существует 1 перпендикуляр аналитически. Но вообще да…это неудобно и не универсально. Но зато так можно задать составную кривую из кривых Безье 2 степени произвольной сложности. Затем нужно будет найти участки на этой кривой разбивающее ее по критерию малой кривизны. Тут что-то вреде итеративного разбиение кривой получая ломанную пока угол между соседними отрезками не будет меньше заданного порога. Немного матана =)). Создать новую гладкую кривую на основе ломанной где куски будут близки к прямой чтобы считать аналитически и не было разрывов =).
0
|
||||
|
13 / 11 / 2
Регистрация: 07.05.2015
Сообщений: 418
|
|
| 19.01.2022, 07:03 [ТС] | |
|
Excalibur921, спасибо, но это 10 лет считаться будет и неточно(
Кроме того, вы не видите разрыва на скрине, но он проявится, если нижняя половина сплайна будет иметь существенно бОльший вес, чем верхняя. Поверьте, разрыв будет. Кроме всего прочего я всё-таки предпочёл бы работать с отрезками, это вычислительно проще. Я не понимаю, почему вы упорно пытаетесь добавить их в эту задачу) Я сказал, что Могу проинтерполировать кривую сплайном только, чтобы не отпугнуть комментаторов, готовых предложить готовый аналитический метод, но сконфужены тем, что я работаю с отрезками. Видимо, эта задача в поставленных условиях не имеет решения.
0
|
|
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
|||
| 19.01.2022, 11:10 | |||
|
Подобие math.h для геометрии Затем нужна проверка принадлежности точки на прямой отрезку. Если сумма квадратов расстояний от точки до концов отрезка равна квадрату длинны отрезка то принадлежит…вроде так. Попробуйте такое
1
|
|||
|
13 / 11 / 2
Регистрация: 07.05.2015
Сообщений: 418
|
|
| 19.01.2022, 12:08 [ТС] | |
|
Excalibur921, похоже придётся на этом остановиться. Кроме того, помимо проекции на отрезки нужно добавить проекцию на сектор вокруг точки кривой (в местах соединения отрезков) иначе выпуклые поверхности не всегда будут иметь проекцию, а в реальности они всегда имеют.
В общем, конечное, что я попробую реализовать - из каждой точки сетки горизонта выпущу n лучей радиально в разные стороны. Найду пересечения лучей и отрезков кривой, благо алгоритм, родственный с QuadTree поможет сделать это быстро. Если пересечение совпадает с первой точкой отрезка - то берём его, если совпадает с последней точкой отрезка - игнорируем. Таким образом будет решаться проблема проекции на точку между отрезками. Удалю те пересечения луча, которые не являются ближайшими к точке А (ведь влияние некоторых перпендикуляров может быть экранировано кривой. С помощю дихотомии найду локальные максимумы функции перпендикулярности луча и кривой (относительно дельта фи, где фи - начальный угол каста луча) (перпендикулярность легко проверить скалярным произведением векторов, только нужно учесть, что точка между отрезками содержит бесконечное количество перпендикуляров в заданном радиальном секторе) В результате оптимизации некоторые лучи (которые нашли общий локальный минимум) будут совпадать. Удалю эти дубликаты. И, наконец, проинтерполирую значение Z в данной точке А основываясь на исходном значении z и взвешенной сумме F(r[i])*w[i], где F(r[i]) - функция угасания влияния кривой, зависящая от расстояния до кривой в данной точке i (полагаю экспонента или другая гладкая функция). Итого Z = z + sum{i}<0, n>(F(r[i])*w[i]) / n Спасибо за помощь, тему надо закрыть. Если будут ещё предложения - пишите пожалуйста, я всегда мониторю старые темы.
0
|
|
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
|
| 19.01.2022, 12:28 | |
|
Попробуйте для начала самое простое, вообще без отрезков. Задать в 3д одну кривую “Квадратичные кривые”.
https://ru.wikipedia.org/wiki/Кривая_Безье Получить на ней точки в 3д просто взяв параметр t с мелким шагом например t=0.05 Точки представлять с зарядом поля и по Blobby Molecules суммы зарядов построить поле. И посомтреть на неудобной форме кривой есть разрывы или нет. Потом можно сделать составную кривую Безье произвольной сложности формой которой управляет ломанная. Кривые Безье
1
|
|
| 19.01.2022, 12:28 | |
|
Найти кривую, если отрезок, отсекаемый касательной на оси ординат, равен полусумме координат точки касания Построить проекции фигуры и точки. Уравнение плоскостей,проекции точки и.т.д Связь координат точки и ее проекции на сфере Нарисовать ровную линию из точки p[0] в точку p[1], и кривую из точки p[0] в точку p[1] Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|