Увеличьте число между двумя числами, чтобы создать самую плавную линию - PullRequest
0 голосов
/ 19 января 2020

Я хотел бы создать формулу / функцию / алгоритм для вычисления самой гладкой линии между двумя наборами чисел.

Set1: (214,224,238)  
Set2: (180,207,226)

Рассмотрим два вышеупомянутых набора как пары.

214-180  
224-207  
238-226

Я полагаю, что первым шагом является получение наименьшей разницы между каждым набором пар. В этом случае это 12 как 238 - 226 = 12. Мы могли бы тогда увеличить 12 раз для двух других пар.

214-180 = 34.  
34/12 = 2.83333333   
214 - (2.83333 * 12) = 180

Если задача позволяет нам иметь десятичные дроби, это довольно просто. Проблема в том, что мы не можем иметь десятичную дробь. Каждое значение должно быть целым числом. Следовательно, в этом примере 10 итераций уменьшатся на 3, а 2 итерации уменьшатся на 2.

Что касается гладкости, то будет иметь смысл, что 2 - 2 итерации должны быть одинаково разнесены между 3. Таким образом, шаблон будет

3, 3, 3, 2, 3, 3, 3, 3, 2, 3, 3, 3. 
211, 208, 205, 203, 200, 197, 194, 192, 189, 186, 183, 180

Надеюсь, я подробно объяснил. Ценю совет.

1 Ответ

1 голос
/ 19 января 2020

Существует алгоритм Брезенхэма , предназначенный для рисования линий на целочисленной сетке.
Алгоритм распределяет шаги по всему диапазону.

enter image description here

Возможно, это может быть уместно в вашем случае.

Продиктуйте своему подходу: вы используете наименьшую разницу координат, в то время как эта go - самая большая - для достижения заявленной цели - "самая плавная линия".

...