strokeStyle="#000000";
    context.stroke();
    context.closePath();
}

function dot_of(a11, a12, a21, a22){
    return a11*a21 + a12*a22;
}

function length_of(a1, a2){
    return Math.sqrt(dot_of(a1, a2, a1, a2));
}

function projected_x(x, y, a1, a2, b){
    return x + a1 * (b - dot_of(x, y, a1, a2)) / dot_of(a1, a2, a1, a2);
}

function projected_y(x, y, a1, a2, b){
    return y + a2 * (b - dot_of(x, y, a1, a2)) / dot_of(a1, a2, a1, a2);
}

function get_points_on_the_ends(a1, a2, b) {    // I need a be