Почему ключ curve не возвращает x1:0 y1:0 x2:0 y2:0. когда ползунок в исходном положении?

У меня есть мой код создания морфов svg codepen

И в нем я нашел проблему ToPoint возвращает массив

[
  { x: 20, y: 20, moveTo: true },
  { x: 70, y: 20 },
  { x: 70, y: 40 },
  { curve: {type: "cubic", x1:10, y1:20, x2:30, y2:5},
    x: 3,
    y: 4
  },

  { x: 90, y: 30 },
  { x: 50, y: 30 },
  { x: 50, y: 50 },
  {
    curve: {type: "cubic", x1:50, y1:20, x2:10, y2:4},
    x: 45,
    y: 40
  },
  { x: 40, y: 30 },
  { x: 20, y: 20 }
];

Я создал три массива все ключи между ними совпадают. кроме значения curve оно может быть а может и не быть среди массивов.

И для решения этой проблемы я добавлял значение curve если в одном из массивов есть этот ключ то он добавляет его в конечный массив. Но теперь когда я пытаюсь вывести ползунок в исходное состояние то значение curve становится не правильным

x1: 940.7077999999999
y1: 380.97080000000005
x2: 695.3243
y2: 367.1671999999999

У меня вопрос что мне нужно изменить в этой части кода

//Функций пересчета пути
function morh_up_str(start, now, end){
var run_step = (end - start) / (ran_end - ran_start);      
var new_val = start+run_step*(ran_now-ran_start); 

return  new_val
}
function morh_dw_str(start, now, end){
var run_step = (now-start)/ran_start; 
var new_val = now-run_step*(ran_start-ran_now); 

return  new_val
}
function morh_up_inc(start, now, end){
var run_step = (end-start)/ran_end; //1  
var new_val = now+run_step*(ran_now-ran_start);  
return new_val;
}
function morh_dw_inc(start, now, end){
var run_step = (end-start)/ran_end; //1 
var new_val = now-run_step*(ran_start-ran_now);  
return new_val;
}

//Запуск подсчета
for(let idx = 0; idx < arr_now_point.length; idx++){
    const a = arr_point_start[idx],
          b = arr_now_point[idx],
          c = arr_point_end[idx]; 
    console.log("start");
  console.log(a);
    console.log("now");
      console.log(b);
  console.log("end");
    console.log(c);
    var item =  { };
if(c){
    const curve = a.curve || b.curve || c.curve;         

    if(curve){
        const points = ['x1', 'y1', 'x2', 'y2'];
        item.curve = { type: 'cubic' };

        let cp = (v,p) => v.curve ? v.curve[p] : 0;

        points.forEach(function(p){
        item.curve[p] = func(cp(a,p), cp(b,p), cp(c,p));
        });    
    }

  if(a.moveTo){
  item.moveTo = a.moveTo;
  }
    item.x = func(a.x, b.x, c.x);
    item.y = func(a.y, b.y, c.y);
}
else if(c === undefined) {
item = a ;
}

что бы значение curve если его не было в массиве now возвращало значение x1:0 y1:0 x2:0 y2:0. когда ползунок равен 0


Ответы (0 шт):