var abc = [];
var Answer = [];
var Button_dis = document.getElementById('button_discrim_graf');
var full_information = document.querySelector('#full_information');
var Answer_xy_1 = document.querySelector('#Answer_xy_1');
var Pressing_sensor_Button_dis = false;
Button_dis.addEventListener('keypress', function(event) {
if (event.keyCode == 13) {
Pressing_sensor_Button_dis = true;
}
});
var score = document.querySelector('#entermass');
score.addEventListener("keypress", function(event) {
if (event.keyCode == 13) {
// получение массива
abc = massivabc();
Answer = discrim(abc);
// отображение массива
if (Pressing_sensor_Button_dis) {
// скрытие Answer_xy_1. Отображение full information
document.querySelectorAll('h2')[0].innerHTML = "Построение параболы";
full_information.style.display = "";
Answer_xy_1.style.display = "none";
// вывод массива при отрисовке таблицы
document.querySelector('#full_information > table > tbody > tr > td > p').innerHTML = Answer[0];
document.querySelector('#full_information > table > tbody > tr > td:last-child > p').innerHTML = Answer[1];
disGraph.height = parseInt(Button_dis.value);
disGraph.width = parseInt(Button_dis.value);
render(parseInt(Button_dis.value), abc);
}
document.querySelector('#Answer_xy_1').innerHTML = "x<sub>1</sub> = " + Answer[0] + "; x<sub>2</sub> = " + Answer[1];
}
});
function massivabc() {
var abcmass = [];
var a = parseFloat(document.querySelectorAll('input')[0].value);
var b = parseFloat(document.querySelectorAll('input')[1].value);
var c = parseFloat(document.querySelectorAll('input')[2].value);
abcmass = [a, b, c];
return abcmass;
};
function discrim(abcmass) {
// рассчет x1 и x2
var x1 = ((-abcmass[1]) - Math.sqrt(abcmass[1] * abcmass[1] - 4 * abcmass[0] * abcmass[2])) / (2 * abcmass[0]);
var x2 = ((-abcmass[1]) + Math.sqrt(abcmass[1] * abcmass[1] - 4 * abcmass[0] * abcmass[2])) / (2 * abcmass[0]);
// вывод x1 и x2 через массив
var masfunc = [+x1.toFixed(8), +x2.toFixed(8)];
return masfunc;
};
function Coefficient_1(Table_size, array) {
Table_size > 0 ? Table_size = Table_size * (-1) : Table_size = Table_size * (1);
array[2] = array[2] - Table_size;
var discriminant = array[1] * array[1] - 4 * array[0] * array[2];
discriminant = Math.sqrt(discriminant);
var x1 = (-array[1] - discriminant) / (2 * array[0]);
var x2 = (-array[1] + discriminant) / (2 * array[0]);
x1 = +Math.abs(x1).toFixed(15);
x2 = +Math.abs(x2).toFixed(15);
if (x1 > x2) {
return (Math.ceil((x1 * 130) / 100));
} else {
return (Math.ceil((x2 * 130) / 100));
}
};
// отрисовка canvas
function render(tale, array_abc) {
var y = 0.0;
var x = -(tale / 2) - 1;
var Coefficient_0 = (Coefficient_1(tale, array_abc)) / 2;
var flip_flopcoefficient_0 = 1 / Coefficient_0;
y = -1 * (array_abc[0] * (x * x) + array_abc[1] * x + array_abc[2]);
for (x = -(tale / 2); x < (tale / 2) + 1; x = x + 1 /*flip_flopcoefficient_0*/ ) {
y = -1 * (abc[0] * (x * x) + abc[1] * x + abc[2]);
ctx.lineTo(x, y);
};
//ctx.scale(2,1);
ctx.stroke();
};
Проблема в следующем. При передаче массива (abc через array_abc) в Coefficent_1 и изменения локальной переменной array изменяется массив abc. Прошу объяснить. Именно объяснить, в чем ошибка. И в каком направлении стоит двигаться, для её решения. (Если что, из кода выкинуто ненужное. Я новичек).