Получение точек неявной функции12.07.2018, 18:16. Показов 1428. Ответов 9
Метки нет (Все метки)
Моя цель - написание трёхмерного графического калькулятора. На вход подаётся функция и её границы программа же визуализирует введённые данные. Соответственно, необходимо сделать разбор введённого выражения и построить синтаксическое дерево но с этим я справился. Проблема заключается именно в построение поверхностей, которые задаются неявными функциями (f(x,y,z)==0). Как я понимаю, после получения точек функции можно применить алгоритм MarchingCubes, но трудность вызывает именно процесс получения этих точек. Я пробовал самый простой способ: тремя циклами обходить x,y,z с константным шагом и получаемые значения подставлять в функцию и если результат нуль(с некой погрешностью) то считать что найдена очередная точка. Но данный подход неточен и я уверен в существовании более корректного метода.
Надеюсь на точное объяснение, в качестве примера простейший, неявной функции можно взять: x2+y2+z2-9=0
0
|
|
| 12.07.2018, 18:16 | |
|
Ответы с готовыми решениями:
9
Табулирование неявной функции Производная неявной функции
|
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||
| 13.07.2018, 01:26 | ||
|
1) Берете какую-то точку (x,y,z). 2) Считаете градиент функции, то есть, вектор G образованный тремя частными производными функции. 3) Осторожными шажками смещаетесь в направлении G (если нужно чтоб функция возрастала) или обратном G (если нужно чтоб убывала), проверяя приблизилась ли функция к нулю. 4) Если приблизилась - goto 2 с новым значением (x,y,z). Если осторожные шажки ничего не дают или просто надоело - конец алгоритма.
0
|
||
|
4079 / 2677 / 432
Регистрация: 09.09.2017
Сообщений: 11,893
|
|
| 13.07.2018, 10:39 | |
|
Renji, ему же нужна поверхность, а не одно какое-то решение.
Можно построить сетку XY с произвольным шагом, для каждой точки подбирая значение Z. Проблема в том, что их может быть несколько, как в вашем примере. В принципе, если это нужно только для визуализации, можно, как вы изначально и хотели, ограничиться просто разбиением оси Z на равные отрезки, достаточно малые чтобы не портить картинку.
0
|
|
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||
| 13.07.2018, 15:09 | ||
|
0
|
||
|
4079 / 2677 / 432
Регистрация: 09.09.2017
Сообщений: 11,893
|
||||
| 13.07.2018, 18:23 | ||||
|
0
|
||||
|
techpriest
634 / 213 / 57
Регистрация: 27.02.2014
Сообщений: 1,180
|
|
| 13.07.2018, 18:37 | |
|
Имхо, надо делать параметрирование через x,y. Задавать сетку двух параметров и для каждого значения, если оно существует, выводить точку.
0
|
|
| 13.07.2018, 21:38 [ТС] | ||||||||
|
Изобрёл простой, не математический алгоритм. Суть заключается, в последовательном переборе точек и ожидании смены знака, привожу упрощенный двухмерный вариант:
0
|
||||||||
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||||
| 14.07.2018, 01:19 | ||||
|
2) Открываете учебник алгебры на разделе "нахождение производной сложной функции". 3) Открываете синтаксическое дерево функции. 4) Складываете пункт три с пунктом два. 3) Вбиваете в Гугл "градиентный спуск".
0
|
||||
|
4079 / 2677 / 432
Регистрация: 09.09.2017
Сообщений: 11,893
|
|||
| 14.07.2018, 09:14 | |||
|
Если уж применять ваш метод, можно попробовать найти одну точку и выпустить из нее несколько лучей в разные стороны по касательным, на каждом луче на равном расстоянии выбрать точку и "притянуть" к поверхности, оттуда еще лучи и так далее
0
|
|||
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
|||
| 14.07.2018, 19:05 | |||
|
0
|
|||
| 14.07.2018, 19:05 | |
|
Помогаю со студенческими работами здесь
10
Производная неявной функции производная неявной функции
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|