Рисование веса ребра на ребре графа

Код генерирует случайный граф (2 случайные вершины, соединённые ребром) на canvas:
Получаем canvas и его контекста. Генерируем случайные координаты для двух вершин. Отрисовываем их и ребро которое их соединяет.Получаем вес ребра (вводит пользователь) через input-поле. И отрисовываем его перпендикулярно к ребру.

Рисование веса ребра перпендикулярно к ребру
Отрисовка весов:
Вычисляем координаты середины ребра и угол ребра. Перемещаем начало координат в середину ребра и поворачиваем ее на угол ребра.
Текст поворачиваем в зависимости от угла ребра (если угол наклона за пределами (от -90 до 90), поворачивает на Math.PI (180)).Смещаем вес на 10px вниз, чтобы он не накладывался на ребро.