Показать сообщение отдельно
  #14 (permalink)  
Старый 21.12.2014, 19:02
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

JsLoveR,
Спасибо. Я нашел немного другой, он по скорости чуть чуть быстрее:

function setLine (x1, y1, x2, y2) {
    var x = x1,
        y = y1;
    var dx = Math.abs(x2-x1),
        dy = Math.abs(y2-y1);
    var sx = (x2-x1)>0?1:((x2-x1)==0?0:-1);
    var sy = (y2-y1)>0?1:((y2-y1)==0?0:-1);
    var tx, ty;
    var z, scount, count, dcount;

    if (dx>=dy) {
        tx = sx; ty = 0;
    } else {
        z=dx; dx=dy; dy=z;
        tx=0; ty=sy;
    }

    scount = 2*dy;
    count = scount-dx;
    dcount = count-dx;

    for(;;) {

        dx -= 1;

        if (dx < -1){
            break;
        }

        setPixel(x, y);

        if (count >= 0) {
            x+=sx;
            y+=sy;
            count += dcount;

        } else {
            x+=tx;
            y+=ty;
            count += scount;
        }
    }
}
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
Ответить с цитированием