С Новым годом! Форум программистов, компьютерный форум, киберфорум
Алгоритмы
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
20 / 20 / 3
Регистрация: 07.02.2014
Сообщений: 233

Интерполяция в многоугольнике - найти значение неизвестной точки

06.05.2015, 21:31. Показов 2015. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Никак не могу придумать алгоритм. Нужны подсказки.
Итак, условие: есть несколько точек. Их координаты известны. Каждая точка содержит значение. На чертеже я дорисовал эти значения. Значение одной из точек неизвестно. Нужно его посчитать (на чертеже помечено вопросом, в скобках то, что должно получиться).
Миниатюры
Интерполяция в многоугольнике - найти значение неизвестной точки  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.05.2015, 21:31
Ответы с готовыми решениями:

Точки в многоугольнике
В общем не давно была олимпиада. и меня меня мучает решение одной задачи: Многоугольник состоит из N (N ≤ 10000) вершин,...

Локализация точки в произвольном многоугольнике
Помогите пожалуйста..Надо в близжайшие 5-6 часов.....BorlandC 309-153-594 ася oksy_@list.ru Множество точек определяет многоугольник....

Найти произвольную четвертую точку если известны координаты точек ABC и расстояние от них до неизвестной точки
Помогите пожалуйста в пятницу зачет а надо сделать задание. Дано три точки A(x1;y1) B(x2;y2) C(x3;y3). Нужно найти произвольную четвертую ...

20
2625 / 1636 / 266
Регистрация: 19.02.2010
Сообщений: 4,348
06.05.2015, 22:36
Взвешивание обратно пропорционально расстоянию от известной точки до неизвестной точки.

Взялся было писать формулу - но мозги в полтретьего ночи не работают, неправильная придумывается.
0
20 / 20 / 3
Регистрация: 07.02.2014
Сообщений: 233
06.05.2015, 22:55  [ТС]
Цитата Сообщение от VTsaregorodtsev Посмотреть сообщение
обратно пропорционально расстоянию от известной точки до неизвестной точки
Не совсем понял, но кажется, я как-то так пытался уже.
Цитата Сообщение от VTsaregorodtsev Посмотреть сообщение
мозги в полтретьего ночи не работают
Надеюсь у Вас найдётся для меня время завтра)
0
2625 / 1636 / 266
Регистрация: 19.02.2010
Сообщений: 4,348
06.05.2015, 23:07
x_Alex_x, я, кстати, просмотрел, что нужно совпадение с ответом (4) - может, для этого надо как-то по-другому придумывать. Но мне будет лень подставлять значения-расстояния и проверять, так что...
0
20 / 20 / 3
Регистрация: 07.02.2014
Сообщений: 233
06.05.2015, 23:12  [ТС]
Чтож, надеюсь ещё найдётся доброволец )
0
1967 / 823 / 114
Регистрация: 01.10.2012
Сообщений: 4,815
Записей в блоге: 2
07.05.2015, 14:58
Цитата Сообщение от x_Alex_x Посмотреть сообщение
Чтож, надеюсь ещё найдётся доброволец )
Ну считать за Вас калькуляторе вряд ли кто будет Задача интерполяции точки по известным - это Вам не "хухры-мухры"

- для трех исходных точек все совершенно однозначно
- для 4 (выпуклых) хорошо подходит bilinear, вероятно от Вас этого и хотят в школе
- для 5 и более... там (если не ошибаюсь) 10 различных методов, в общих чертах: или разные варианты взвешивания, или диаграмма Вороного и там уже своя песня. Конечно все это можно использовать и для 4

Поэтому если метод не указан - наверное читайте bilinear

Добавлено через 10 минут
Цитата Сообщение от VTsaregorodtsev Посмотреть сообщение
Взвешивание обратно пропорционально расстоянию от известной точки до неизвестной точки.
Возьмем точку на ребре многоугольника, напр (2-5). В ней вес остальных вершин (3, 6) ненулевой. А если мы выскочим из многоугольника, то вместо (3, 6) будут уже какие-то др вершины. Т.е. значения в соседних точках меняются скачком, обычно это неприемлемо.
0
20 / 20 / 3
Регистрация: 07.02.2014
Сообщений: 233
07.05.2015, 15:32  [ТС]
Цитата Сообщение от Igor3D Посмотреть сообщение
читайте bilinear
Я уже как-то использовал этот метод. И если я не ошибаюсь, он годится только для прямоугольника.

Цитата Сообщение от Igor3D Посмотреть сообщение
Ну считать за Вас калькуляторе вряд ли кто будет
Именно поэтому я сделал небольшой набросок в эксель. Он даже почти работает ) Правда только если указывать одинаковые длины отрезков.
Миниатюры
Интерполяция в многоугольнике - найти значение неизвестной точки  
Вложения
Тип файла: xlsx интерполяция в многоугольнике.xlsx (10.3 Кб, 0 просмотров)
0
1967 / 823 / 114
Регистрация: 01.10.2012
Сообщений: 4,815
Записей в блоге: 2
07.05.2015, 16:28
Цитата Сообщение от x_Alex_x Посмотреть сообщение
Я уже как-то использовал этот метод. И если я не ошибаюсь, он годится только для прямоугольника.
Не только, для любого выпуклого ("квадлитерала"), вот навскидку ссылочка
https://www.particleincell.com... rpolation/

Добавлено через 33 минуты
Если не хотите возиться, то есть решение проще и тоже с неплохим качеством

- разбиваете 4-угольник на 2 треугольника, смотрите куда попала точка и интерполируете в том тр-ке (там все однозначно). Потом разбиваете на 2 других тр-ка, получаете тем же образом второй рез-т и осредняете
1
20 / 20 / 3
Регистрация: 07.02.2014
Сообщений: 233
07.05.2015, 17:44  [ТС]
Цитата Сообщение от Igor3D Посмотреть сообщение
квадлитерал
Гугл не знает этого слова. Как я понял, это искажённый прямоугольник? Но опять же, у меня может быть разное количество вершин.
Цитата Сообщение от Igor3D Посмотреть сообщение
- разбиваете 4-угольник на 2 треугольника, смотрите куда попала точка и интерполируете в том тр-ке (там все однозначно). Потом разбиваете на 2 других тр-ка, получаете тем же образом второй рез-т и осредняете
Немного изменю алгоритм:
Для каждой вершины многоугольника искать такой треугольник в который входила бы искомая точка, состоящий из этой вершины и двух других соседних друг с другом вершин многоугольника. Суммировать значения, полученные при интерполяции в этом треугольнике. После всех итераций делить сумму на число вершин.
Я проверил. Этот алгоритм работает. Большое спасибо за подсказку!
0
1967 / 823 / 114
Регистрация: 01.10.2012
Сообщений: 4,815
Записей в блоге: 2
07.05.2015, 18:03
Цитата Сообщение от x_Alex_x Посмотреть сообщение
Гугл не знает этого слова. Как я понял, это искажённый прямоугольник?
Да, набираете просто "bilinear interpolation q" - и оно Вам допоолнит до этого мудреного латинского слова

Цитата Сообщение от x_Alex_x Посмотреть сообщение
Но опять же, у меня может быть разное количество вершин.
Какое "опять же"? Специально перечитал весь тред - не вижу НИ ОДНОГО упоминания о "разном кол-ве вершин". А разница здесь принципиальная. Товарищ, давайте ценить время свое и других, нечего воздух гонять.

Цитата Сообщение от x_Alex_x Посмотреть сообщение
Немного изменю алгоритм:
Для каждой вершины многоугольника искать такой треугольник в который входила бы искомая точка, состоящий из этой вершины и двух других соседних друг с другом вершин многоугольника. Суммировать значения, полученные при интерполяции в этом треугольнике. После всех итераций делить сумму на число вершин.
Ну это все-таки "fake", хотя да, рабочий. Посмотрите
http://geometry.caltech.edu/pubs/MHBD02.pdf
На практике это спорно, но все равно идея интересная
1
20 / 20 / 3
Регистрация: 07.02.2014
Сообщений: 233
07.05.2015, 18:21  [ТС]
Цитата Сообщение от Igor3D Посмотреть сообщение
Какое "опять же"?
Цитата Сообщение от x_Alex_x Посмотреть сообщение
Итак, условие: есть несколько точек.
Так вот же.

Кстати, алгоритм оказался неверным. А при проверке я использовал частный случай, который даёт правильный результат.
0
1967 / 823 / 114
Регистрация: 01.10.2012
Сообщений: 4,815
Записей в блоге: 2
08.05.2015, 08:06
Цитата Сообщение от x_Alex_x Посмотреть сообщение
Кстати, алгоритм оказался неверным.
Я его использовал не один раз, он хоть и оставляет заметные "ребра", но намного лучше чем просто триангуляция и использование одного тр-ка. Можно немного улучшить ослабив вес "внутреннего" ребра.

Цитата Сообщение от x_Alex_x Посмотреть сообщение
А при проверке я использовал частный случай, который даёт правильный результат.
Как уже упоминалось, методов интерполяции множество - и все они будут давать неодинаковые результаты. Поэтому какой считать "правильным" - неизвестно
0
20 / 20 / 3
Регистрация: 07.02.2014
Сообщений: 233
08.05.2015, 11:16  [ТС]
Igor3D, я использовал примерно такой многоугольник. В первом случае я получил тройку, а во втором что-то около единицы.

Сейчас разбираю приведённый Вами pdf. Поправьте меня пожалуйста если я не прав: норма вектора это его длина?
Миниатюры
Интерполяция в многоугольнике - найти значение неизвестной точки  
0
20 / 20 / 3
Регистрация: 07.02.2014
Сообщений: 233
08.05.2015, 11:26  [ТС]
Хотя ведь всё правильно! Ведь тройкой во втором случае и не пахнет. Что-то я сам себя запутал. Сейчас перепроверю ещё раз.
0
20 / 20 / 3
Регистрация: 07.02.2014
Сообщений: 233
08.05.2015, 11:32  [ТС]
Вот это похоже на правду?
Миниатюры
Интерполяция в многоугольнике - найти значение неизвестной точки  
0
1967 / 823 / 114
Регистрация: 01.10.2012
Сообщений: 4,815
Записей в блоге: 2
08.05.2015, 11:55
Цитата Сообщение от x_Alex_x Посмотреть сообщение
Сейчас разбираю приведённый Вами pdf. Поправьте меня пожалуйста если я не прав: норма вектора это его длина?
Да, ну и на всякий случай: внутри тр-ка интерполяция barycentric. По тому pdf я сам пробовал неск раз - ну не всегда рез-т меня устраивал.

Цитата Сообщение от x_Alex_x Посмотреть сообщение
Хотя ведь всё правильно! Ведь тройкой во втором случае и не пахнет. Что-то я сам себя запутал. Сейчас перепроверю ещё раз.
Чтобы прочувствовать как это работает: сделайте просто квадрат ABCD, значения в AC = 1, в BD = 0 (крестом). Выведите на экран интерполяцию сначала по первой паре тр-ков, потом по второй, потом среднее. Это будет гораздо быстрее чем муторные просчеты тестовых точек

Добавлено через 11 минут
Цитата Сообщение от x_Alex_x Посмотреть сообщение
Вот это похоже на правду?
Ну прикинем.

По обеим точкам 1: близко от ребра, что-то типа 0.95 * 2
По обеим точкам 2: тоже близко, где-то 1.95 * 2
По точке -1: на глазок 1.5

Итого (0.95 * 2 + 1.95 * 2 + 1.5) / 5 = 1.46
Да, похоже (все бралось на глаз). Все равно - визуализируйте цветом, не парьтесь с расчетами на бумаге
0
20 / 20 / 3
Регистрация: 07.02.2014
Сообщений: 233
08.05.2015, 12:23  [ТС]
Igor3D, алгоритм выдаёт неверный результат когда точка находится снаружи треугольника:
1,00 0,75 0,50 0,25 0,00
1,00 0,75 0,50 0,25 0,33
1,00 0,75 0,50 0,50 0,50
1,00 0,75 0,67 0,63 0,60
1,00 0,83 0,75 0,70 0,67
Здесь начало координат слева сверху.
Так и должно быть?
Я использовал эту формулу:
Миниатюры
Интерполяция в многоугольнике - найти значение неизвестной точки  
0
20 / 20 / 3
Регистрация: 07.02.2014
Сообщений: 233
08.05.2015, 12:52  [ТС]
Цитата Сообщение от Igor3D Посмотреть сообщение
Да, похоже (все бралось на глаз). Все равно - визуализируйте цветом
Я думаю, это уже излишки. Не такой уж сложный этот алгоритм. Мне хватит пересчёта нескольких точек. О цветной визуализации я задумаюсь когда дело дойдёт до более сложных, сглаженных методов интерполяции.
Цитата Сообщение от Igor3D Посмотреть сообщение
не парьтесь с расчетами на бумаге
Нуу! Какая бумага? Я слишком ленив для этого )


Добавлено через 22 минуты
Цитата Сообщение от x_Alex_x Посмотреть сообщение
Здесь начало координат слева сверху.
Исправлю. У вершин квадрата такие значения:
1 0
1 0
А треугольник построен на этих вершинах:
* *
* -
0
1967 / 823 / 114
Регистрация: 01.10.2012
Сообщений: 4,815
Записей в блоге: 2
08.05.2015, 13:55
Цитата Сообщение от x_Alex_x Посмотреть сообщение
алгоритм выдаёт неверный результат когда точка находится снаружи треугольника:
Само собой, интерполяции подлежат только точки внутри. Сумма площадей внутренних тр-ков должна быть равна площади вмещающего (с каким-то epsilon). Если сумма больше (или разные знаки) - все, точка снаружи

Добавлено через 3 минуты
Цитата Сообщение от x_Alex_x Посмотреть сообщение
Я думаю, это уже излишки. Не такой уж сложный этот алгоритм. Мне хватит пересчёта нескольких точек. О цветной визуализации я задумаюсь когда дело дойдёт до более сложных, сглаженных методов интерполяции.
"Ой напрасно тетя Вы таблетки пьете" Ну как себе хотите
0
Модератор
Эксперт функциональных языков программирования
3133 / 2280 / 469
Регистрация: 26.03.2015
Сообщений: 8,876
12.05.2015, 07:03
Цитата Сообщение от x_Alex_x Посмотреть сообщение
Итак, условие: есть несколько точек. Их координаты известны. Каждая точка содержит значение. На чертеже я дорисовал эти значения. Значение одной из точек неизвестно. Нужно его посчитать (на чертеже помечено вопросом, в скобках то, что должно получиться).
А то, что значение в каждой точке равно координате по оси Y, это случайное совпадение?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.05.2015, 07:03
Помогаю со студенческими работами здесь

Оптимизировать код, проверки нахождения точки в многоугольнике
Можно ли оптимизировать этот код, т. е. выполнить проверку (заданную в коде) более простым алгоритмом, чтобы программа работала быстрее?...

Найти в многоугольнике длины диагоналей
Найти в многоугольнике длины диагоналей, вывести на экран размер и вершины самой маленькой и самой большой диагонали.

Найти синус угла в многоугольнике
Я хочу найти синус каждого угла в многоугольнике с помощью векторного произведения, вот части кода: double cosinus(double x1, double x2,...

Найти минимальное количество прямоугольников в многоугольнике
Экранная задача. Даны координаты вершин выпуклого многоугольника в пикселях. Надо определить координаты вершин минимального...

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru