от код яваскрипта чтобы нарисовать линию, в пиксельной таблице размером в 50на50
function crt_t(){
var x = 50;
var y = 50;
var s = '<table width="1" border="0" cellspacing="0">';
var id = '';
for (var j = 1; j <= y; j++) {
s += '<tr>';
for (var i = 1; i <= x; i++) {
var id = i+';'+j;
s += '<td id="' + id + '" bgcolor="#009900" ></td>'
}
s += '</tr>';
}
s += '</table>';
document.getElementById('dd').innerHTML = s;
}
function line(x1,x2,y1,y2){
xt = x1 + 1;
n = Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)) ;
k = (y2-y1)/(x2-x1);
b = y2-k*x2;
for (i=0;i<n;i++){
yt=Math.round(k*xt+b);
document.getElementById(xt+';'+yt).bgColor = 'black';
xt = xt + 1;
}
}
n - формула для нахождения отрезка, то есть его длину, и это есть количество точек, которое стоит между точками (х1;у1) и (х2;у2), то есть нам надо сделать далее цикл который и будет ставить эти точки, но нам надо найти теперь координаты этих точек, применяя формулу что
y = x*k + b, для прямолинейного отрезка, чтобы иметь эту формулу нам надо узнать k - угловой коэффициент и b - смещение, короче это будет система из уравнений, y1 = k*x1+b и y2 = k*x2+b но так как яваскрипт не решает системы из двух не известных, я ему сократил до
k = (y2-y1)/(x2-x1) де у нас x1,x2,y1,y2 >0 и подставивши это в уравнение прямой, b = y2 - k*x1 = y2 - (y2-y1)/(x2-x1)*x1.
и в конце оно просто добавляет по +1 к иксу и узнает у и его заливает), но линия может получаться немного не ровная или дето не будет зватать пкселей) или если задать line(49,35,45,25) так оно вообще нарисует точку, ОДНУ!) (49;45) и всё..) кто-мне может помочь с єтой функцией, не много , пожалуйста)