Почему ключ 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