2016-01-20 6 views
0

У меня есть таблица значений, составляющих кривые, и я хочу алгоритм для использования в (Java или C), которые дают мне значения каждого интервалКак разделить Numerique кривой

enter image description here

результат, который мне нужен =>

Группа 1 => (0,0) (1,1) (2,2)
Группа 2 => (2,2) (3,2) (4,2)
Группа 3 => (4,2) (5,1,25) (6,0,5)
Группа 4 => (6,0,5)Группа 4 => (9,0,5) (10,1,5) (11,1,5) (12,1,5)

Каковы методы, которые могут дать мне результат, который я вам показал?

и мне нужно, что алгоритм работы и эта структура не только сцепляются отрезки enter image description here

+0

Это кривые или конкатенированные сегменты линии? –

+0

да, но как пример, но я хочу, чтобы алгоритм работал также со всеми видами кривой и преобразовывал их в линейную кривую. – osselosse

+0

@MarkusKull посмотреть на мое редактирование – osselosse

ответ

1

Что вам нужно, это алгоритм интерполяции. Есть много разных свойств, и трудно сказать, какой из них подходит вам.

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

Простейший вариант - линейная интерполяция. Для точки x, y между x1, y1 и x2, y2 у вас есть y = (x-x1)/(x2-x1) * y1 + (x2-x)/(x2-x1) * y2, поэтому, если вы выберете x, вы можете вычислить y. Это даст вам прямые линии.

Если это слишком просто для вашего приложения, посмотрите на некоторые функции кривой. Безье предпочитают во многих ситуациях, потому что это быстро, а кривая зависит от ограниченного числа соседних точек. См. wikipedia.

Сказанное, помните, что все это приближения и имеют множество предположений, поэтому маловероятно, что он будет идеально соответствовать истине земли.

+0

Я думаю, ему нужно больше, но это хороший старт, хотя это возможно только с дискретными значениями – mikus