Cubi c / Quinti c линейная интерполяция - PullRequest
1 голос
/ 02 августа 2020

Ниже приведена функция линейной интерполяции:

float lerp (float a, float b, float weight) {
    return a + weight * (b - a);
}

Ниже приведена функция интерполяции c в кубе:

float cubic (float p1, float p2, float p3, float p4, float weight) {
    float m = weight * weight;
    float a = p4 - p3 - p1 + p2;
    float b = p1 - p2 - a;
    float c = p3 - p1;
    float d = p2;
    return a * weight * m + b * m + c * weight + d;    
}

Как называется следующий метод ?:

float lerp (float a, float b, float weight) {
    float v = weight * weigth * (3.0f - 2.0f * weight);
    return a + v * (b - a);
}

Я видел, как некоторые люди ссылались на вышеупомянутый метод как на «cubi c», но для меня для кубической c интерполяции требуется 4 точки.

Кроме того, Я также видел следующее:

float lerp (float a, float b, float weight) {
    float v = weight * weight * weight * (weight * (weight * 6.0f - 15.0f) + 10.0f);
    return a + v * (b - a);
}

Приведенный выше код упоминается как «quinti c», но я не совсем уверен, как эти функции могут быть «cubi c» и «quinti c» без необходимых дополнительных «точек».

Как называются эти операции, выполняемые над «весами»?

float v = weight * weigth * (3.0f - 2.0f * weight);
float v = weight * weight * weight  * (weight  * (weight * 6.0f - 15.0f) + 10.0f);

1 Ответ

2 голосов
/ 02 августа 2020

«Куби c» - другое слово для «полинома третьей степени».

«Квинти c» - другое слово для «пятой степени» многочлен ".

Количество параметров не имеет значения. P(x) = x*x*x является полиномом «cubi c», хотя параметры отсутствуют.

Как называются эти операции, выполняемые над «весами»?

...

Эти функции называются "smoothstep" . Функции плавного шага - это семейство многочленов нечетной степени. Первый - это плавный шаг 3-й степени (или «куби c»), второй - плавный шаг 5-й степени (или «квинти c»).

...