client(xys[0][0]), y_to_client(xys[0][1]));
        context.lineTo(x_to_client(xys[1][0]), y_to_client(xys[1][1]));
        context.strokeStyle = line_colors[i];
        context.stroke();
        context.lineWidth = 1;
        context.closePath();
    }

    // solver
    context.beginPath();
    context.moveTo(x_to_client(start_x), y_to_client(start_y));
    var prev_x = start_x + end_step_length + 1.;    // not to fall as done
    var prev_y = start_y;
    var cur_x = start_x;
    var cur_y = start_y;
   