Форум программистов, компьютерный форум, киберфорум
Математический анализ
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.64/22: Рейтинг темы: голосов - 22, средняя оценка - 4.64
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
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.01.2022, 13:39
Ответы с готовыми решениями:

Найти проекции скорости и координаты точки как функции от времени
Точка движется на плоскости так, что проекции её ускорения на координатные оси зависят от времени по закону: ax=At ay=Bt^2+c где а б с -...

Найти коорд.проекции точки и составить уравнение сторон треугольника
4.Найти координаты проекции точки А(7;1;1) на плоскость x-2y+z-4=0 5.Составить уравнения сторон треугольника АВС, если известны...

Найти проекции каждой точки заданного множества в пространстве на заданную прямую
Найти проекции каждой точки заданного множества в трёхмер- ном пространстве на заданную прямую.

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
Цитата Сообщение от Aycon Посмотреть сообщение
правда эррозия.
Нужен примерный эталон результата, фотка.

Цитата Сообщение от Aycon Посмотреть сообщение
в любой точке в окрестности НЕРАВНОМЕРНО нагретой проволоки. Вот что мне нужно
Это вроде называют Интерполяция на неравномерной сетке
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
Цитата Сообщение от Aycon Посмотреть сообщение
место резкого перегиба кривой
Это лучше называть не перегибом, а изломом - в точке которого вторая производная функции (первая производная градиента) имеет разрыв. В точке перегиба вторая производная, как хорошо известно, обращается в ноль. В любом случае в этих точках функция расстояния не будет иметь экстремум, а поэтому эти точки легко отсеять при поиске Ваших проекций.
0
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
18.01.2022, 10:50
Честно говоря еще больше непонятно.
Уже 3 раз пишу, покажите карту высот которую хотите получить в итоге. Обычная карта высот это оттенки серого а кривую разлома сделать например красной. Пример рис пост 20, чем ярче пиксель тем он выше по Z.

Или реальную фотку самого разлома на который ориентируетесь... но там может быть много лишней математики.

Цитата Сообщение от Aycon Посмотреть сообщение
Я ничего не говорил про линейность уменьшения амплитуды.
Так расстояние ведь уменьшается линейно. Отсюда плавности нарастания высоты не будет, будет похоже больше на куски стекла с разломом. Потому берут некоторую функцию от этого. Для наглядности представьте вместо кривой отрезок на поверхности сетки точек. Единственно что может это ослабить то что в каждой точке сетки нужно искать ближайшее расстояние до кривой, но как это будет выглядеть непонятно.

На сайте шейдертоя есть вроде аналитический метод получения ближайшего расстояния до кривой Безье со знаком от произвольной точки в 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, вечером отправлю картинку что хочу получить, если не забуду.
На сайте шейдертоя есть вроде аналитический метод получения ближайшего расстояния до кривой Безье со знаком от произвольной точки в 2д…вы что численно находили расстояние до каждого пикселя? Ого…
- я работаю сейчас только с отрезками, и да, у меня нет технической возможности использовать графический процессор и шейдер. Я использую алгоритм, который напоминает QuadTree для расчёта расстояния. И да, не для каждого пикселя, у меня регулярная сетка примерно 250 на 400 точек. Считает секунд 40-50, но ничего лучше я поделать не смогу. Оптимизировал с учётом специфики задачи - теперь расчёт 10 секунд. Вечером напишу, если не забуду

Добавлено через 3 минуты
Excalibur921, там билинейная интерполяция цвета просто между точками, поэтому так всё красиво. Но в точках расчитано расстояние честно. sqrt(x*x + y*y)
0
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
18.01.2022, 12:45
Цитата Сообщение от Aycon Посмотреть сообщение
у меня нет технической возможности использовать графический процессор и шейдер.
Там же вроде нашли в книгах уравнения
Цитата Сообщение от Excalibur921 Посмотреть сообщение
The distance to a weighted quadratic bezier is analytic but it requires solving a quartic
А там чисто пример реализации в коде налету.
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 степень уравнений, почему на вики нет описания готовых формул…это много где бы пригодилось. Как вы и хотели скорость и точность аналитически. Если разберетесь в коде там то взять куски что считают расстояние уже готовые.

Цитата Сообщение от Aycon Посмотреть сообщение
а также все перпендикуляры к кривой должны влиять на результат расчёта.
Понятно зачем все перпендикуляры, ступенька будет…
Тогда похоже на задачу рендера неявных поверхностей, они все гладкие. Это объекты с некотором зарядом поля, аналог электрического поля.
Вот тут есть несколько вариантов функций от расстояния с плавным угасанием.
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
Цитата Сообщение от Aycon Посмотреть сообщение
Во всех задачах на заряд подразумевается, что объект равномерно заряжен.
Идея была такая что аналог заряда это место куда попадает перпендикуляр а величина Z высоты кривой в этой точке и есть заряд. Вообще кривую можно представить чисто как набор точек, их высота это и есть аналог заряда. Так можно строить очень сложные поля.

Цитата Сообщение от Aycon Посмотреть сообщение
Мне бы алгоритм чтобы найти сами перпендикуляры
Ну численный есть…аналитику с шейдертоя вы искать я так понял не хотите.
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
Цитата Сообщение от Aycon Посмотреть сообщение
я не очень хорошо понял что искать
Пост 27 там 80 строк по ссылке в шейдертой готовые формулы, я так понял что аналитика расстояние до кривой Безье.
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
Цитата Сообщение от Aycon Посмотреть сообщение
Во-первых, я не могу использовать шейдер
А взять оттуда формулы и считать где угодно можно?
Цитата Сообщение от Aycon Посмотреть сообщение
нужно несколько перпендикуляров, чтобы избавится от разрывов.
Может попробовать задавать ряд точек на кривой и считать среднее сумму от функций расстояний до них через Blobby Molecules пост 30 ссылка. Тогда в построении будут всегда все точки с зарядом, все так сказать перпендикуляры и не придется их искать численно.
Цитата Сообщение от Aycon Посмотреть сообщение
Одного минимального расстояния мало - это факт. Неоспоримый факт.
Там нет близко расположенного разрыва если кривизна довольно мала.

Это можно использовать.
Так для каждой кривой 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
Цитата Сообщение от Aycon Посмотреть сообщение
я всё-таки предпочёл бы работать с отрезками, это вычислительно проще.
аналитика проекция точки на прямую 2d\3d
Подобие math.h для геометрии
Затем нужна проверка принадлежности точки на прямой отрезку.
Если сумма квадратов расстояний от точки до концов отрезка равна квадрату длинны отрезка то принадлежит…вроде так.

Попробуйте такое
Цитата Сообщение от Excalibur921 Посмотреть сообщение
задавать ряд точек на кривой и считать среднее сумму от функций
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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.01.2022, 12:28

Найти кривую, если отрезок, отсекаемый касательной на оси ординат, равен полусумме координат точки касания
Народ, помогите пожалуйста! Задача: Найти кривую, в которой отрезок, отсекаемый касательной на оси ординат, равен полусумме координат точки...

Построить проекции фигуры и точки.
Вот 2 задания, построение проекции фигуры и точки, помогите пожалуйста:)

Уравнение плоскостей,проекции точки и.т.д
1.Установить взаимное расположение прямой x-2/2=y+5/-3=z-2/4 и плоскости 2x+y+z=0.Если параллельные найти расстояние между ними,если...

Связь координат точки и ее проекции на сфере
Вопрос короткий, но мне непонятен. Пусть дано комплексное число z=x+iy. В чем разница между следующими двумя способами связать x и y с...

Нарисовать ровную линию из точки p[0] в точку p[1], и кривую из точки p[0] в точку p[1]
Есть 4 точки: Point p; p.x = 50; p.y = 50; p.x = 150; p.y = 50; p.x = 50; p.y = 100; p.x = 150; p.y = 100; ...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
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, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru