Интерполяция разбросанных данных: что я мог сделать? - PullRequest
2 голосов
/ 25 мая 2010

Я работаю над трехмерной диаграммой в Java, используя Java 3D. Он должен отображать кучу измеренных значений. При измерении полученные данные разбросаны. Это означает, что мне придется интерполировать недостающие точки, чтобы правильно нарисовать мою поверхность.

Я еще не изучал все эти 3D-геометрии, и я не знаю, с чего начать. Моя идея состоит в том, чтобы триангулировать точки на поверхности, а затем, основываясь на триангуляции, интерполировать недостающие точки. (см. это , чтобы получить общее представление о том, чего я хочу достичь)

Есть ли у кого-то опыт интерполяции разбросанных данных? Правильный ли мой подход? Если да, какие структуры данных и алгоритмы мне понадобятся для триангуляции моего облака точек?

Ответы [ 3 ]

2 голосов
/ 25 мая 2010

Триангуляция очень быстрая, если вам нужно выполнить большую интерполяцию для большого набора нерегулярных данных, например, для контурной обработки поверхности земли. Интерполяция является линейной и дискретной, основанной исключительно на трех точках треугольника, в который вы интерполируете. В также поддерживает ограничения, такие как разрыв строки, например, Подумайте о поверхности земли, определяемой точками, которые включают в себя линию, определяющую горный хребет или скалу.

Сплайны дают более плавный результат для всех входных данных, но могут быть очень медленными для больших наборов данных и могут давать необычные результаты для плохо разнесенных данных. Вы также можете посмотреть NURBS (тип сплайновой поверхности) и патчи Безье.

0 голосов
/ 19 сентября 2010

Если вам не нужна нагрузка триангуляции, вы можете посмотреть кригинг или радиальную базисную интерполяцию функции .

0 голосов
/ 25 мая 2010

Вам необходимо использовать функцию интерполяции, в основном она принимает ваши данные в качестве входных данных и возвращает значение z для любого (x, y).

Например, вы можете использовать сплайн-интерполяцию, как это реализовано в apache commons math

...