«Слияние» прямой в гауссову кривую - PullRequest
1 голос
/ 05 марта 2012

Можно предположить, что первое изображение ниже является исходной кривой Гаусса. Второе изображение - это желаемый результат. У меня есть эти уравнения:

  • Уравнение каждого отрезка красной линии (назовем это кусочной функцией f (x) )
  • Уравнение кривой Гаусса ( г (х) )

Я пытаюсь составить уравнение, которое может изменить кривую Гаусса, чтобы она соответствовала кривой на втором изображении. Я попытался построить (f (x) + g (x)) / 2 (последнее изображение), но это не сработало. Я также попытался использовать отрезок красной линии в дальнем правом углу в качестве независимой оси для построения правой части кривой, но это приводит к огромному разрыву. У кого-нибудь есть другие идеи?

Редактировать: Третье изображение показывает, что происходит, когда я пытаюсь линейной интерполяции.

Actual Gaussian curve

Adjusted curve

Linear interpolation

Ответы [ 2 ]

1 голос
/ 05 марта 2012

Попробуйте приблизить вашу кривую Гаусса с помощью B-сплайна, как, например, это делается здесь .Поскольку порядок добавления точек к B-сплайну (который является обобщением кривых Безье) более понятен, вы сможете получить желаемый результат.

0 голосов
/ 05 марта 2012

Я понятия не имею о математическом аспекте этого, но что касается последней части вашего вопроса (построение правой части кривой с использованием красной оси), я думаю, вы могли бы сгладить переход между кривой и ось с довольно простым процессом:

plotPosition = curvePosition * (1 - t) + otherPosition * t;

"t" - это число от 0 до 1 (когда t = 0 plotPosition равняется curvePosition, когда t = 1 plotPosition равняется otherPosition), таким образом вы можете определить, когда и как вы хотите, чтобы произошел переход. Вы можете сгладить его еще больше, используя какое-то уравнение для определения значения перехода во времени (замедление).

...