
Код:
function potential() {
E = F = 0;
for (var n = 0; n < 620; n = n + 3) {
var n1 = 50 - n;
var n2 = 190 - n;
var n3 = 150 - n;
var n4 = 70 - n;
for (var m = 0; m < 620; m = m + 3) {
array_distance1 = Math.sqrt((n1) * (n1) + (25 - m) * (25 - m));
array_distance2 = Math.sqrt((n2) * (n2) + (150 - m) * (150 - m));
array_distance3 = Math.sqrt((n3) * (n3) + (100 - m) * (100 - m));
array_distance4 = Math.sqrt((n4) * (n4) + (190 - m) * (190 - m));
E = Math.round(10 * (500 / array_distance1 - 500 / array_distance2 + 100 / array_distance3 + 300 / array_distance4)) / 10;
lmax = 20;
if (E < 15 && E > -20) {
for (var j = 1; j <= 20; j++) {
lmax -= 2;
if (E >= lmax && E <= lmax + 0.1) {
myBitmapData.setPixel(n, m, 0xff0000);
}
}
}
}
}
}
так рисует до конца. затык тут конечно в количестве итераций и ничего тут не попишешь.
попробуйте исключить из прорисовки "дальние" от зарядов области, где значения потенциалов заведомо "малы", т.е. чтобы в этих областях не просчитывать потенциалы и не отображать их на экране, ибо все равно там пусто будет.
характер задачи изначально предполагает большое количество вычислений. насколько я знаю подобные вычислительные задачи в случае сложного распределения зарядов решаются "штучно", т.е. на мощном компе и изредка при острой необходимости.