04.10.2022, 14:11
|
Аспирант
|
|
Регистрация: 21.08.2022
Сообщений: 57
|
|
Получить массив из двух исходных массивов
Требуется получить два массива: yL = [0, 0.25, -0.375, 0.75, -0.5, 0.5] из двух массивов
xsL = [2, 7, 10, 15, 19] и xoL = [0, 4, 8, 13, 17] и yP = [-0.5, 0.5, -0.5, 0.75, 0.75, 0] из двух массивов: xsP = [27, 31, 37, 42, 46] и xoP = [29, 34, 39, 44, 48]. На картинке представлены данные массивы в виде схемы их расположения. Представленные линии соединяющие точки после своего перемещения в результате принудительного перемещения начальных точек hLL = 0.5 и hPP = -0.5 для левой и правой волн, соответственно.
|
|
04.10.2022, 17:17
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,123
|
|
IZUM,
let hLL = 0.5,
xsL = [2, 7, 10, 15, 19],
xoL = [0, 4, 8, 13, 17],
i = xsL.length,
yL = [hLL];
for (; i--;) {
let delta = hLL / (xsL[i] - xoL[i]);
hLL += ((xsL[i - 1] ?? xoL[i]) - xsL[i]) * delta;
yL.unshift(hLL)
}
console.log(yL, '[0, 0.25, -0.375, 0.75, -0.5, 0.5]')
let hPP = -0.5,
xsP = [27, 31, 37, 42, 46],
xoP = [29, 34, 39, 44, 48],
length = xsP.length,
yP = [hPP];
for (let k = 0; k < length; k++) {
let delta = hPP / (xsP[k] - xoP[k]);
hPP += ((xsP[k + 1] ?? xoP[k]) - xsP[k]) * delta;
yP.push(hPP)
}
console.log(yP, '[-0.5, 0.5, -0.5, 0.75, 0.75, 0]')
|
|
04.10.2022, 19:10
|
Аспирант
|
|
Регистрация: 21.08.2022
Сообщений: 57
|
|
Если, я не ошибаюсь, то по картинке, да и по сути, должно быть console.log(yP, '[-0.5, 0.5, -0.5, 0.75, -0.75, 0]') То есть, второй элемент 0.75 должен быть со знаком (-) минус
|
|
04.10.2022, 19:19
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,123
|
|
IZUM,
да, видимо ваш первый пост не совсем точен)))
|
|
04.10.2022, 19:24
|
Аспирант
|
|
Регистрация: 21.08.2022
Сообщений: 57
|
|
yP = [-0.5, 0.5, -0.5, 0.75, -0.75, 0] '[-0.5, 0.5, -0.5, 0.75, 0.75, 0]' В таком виде выводится yP в консоль. Можно yP представить в нормальном виде массива. Также, выводится и yL.
|
|
04.10.2022, 19:32
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,123
|
|
IZUM,
не осилил, предоставленный код работает правильно, выводит результат в виде массива и с правильными данными, что не так? или вы свою строку поправить не в состоянии?
console.log(yP, '[-0.5, 0.5, -0.5, 0.75, -0.75, 0]')
|
|
04.10.2022, 19:33
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,123
|
|
IZUM,
или просто console.log(yP);
|
|
04.10.2022, 19:34
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,123
|
|
и console.log(yL)
|
|
04.10.2022, 19:35
|
Аспирант
|
|
Регистрация: 21.08.2022
Сообщений: 57
|
|
Да, я так и сделал. теперь всё, как надо. большое спасибо.
|
|
04.10.2022, 19:36
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,123
|
|
IZUM,
console.log(yP, '[-0.5, 0.5, -0.5, 0.75, -0.75, 0]') - параметр '[-0.5, 0.5, -0.5, 0.75, -0.75, 0]' дан просто для наглядности и удобства сравнения полученного результата и ожидаемого.
|
|
|
|