Вместо линии используйте четырехугольную полосу или треугольную полосу, центрированную по обводке и имеющую желаемую ширину.
РЕДАКТИРОВАТЬ согласно комментарию
Рисование толстой линии с использованием квадратовтреугольники выполняются следующим образом:
Верхняя левая подматрица 3 × 3 вида модели является вращающейся частью.Вы хотите нарисовать линию с утолщениями в пространстве экрана, т.е. обратить вспять локальное вращение.Для этого вам нужно обратное вращение вида модели.Вращения - это ортогональные преобразования, поэтому inverse(M) = transpose(M)
.
Технически нас интересует только проекция оси Z "Z_local".Для этого мы можем просто взять вектор 3-й строки матрицы вида модели, при этом последний элемент "w" установлен на ноль, а весь вектор нормализован, то есть
Z_local_i = MV_i,3
Далее нам нужен вектор касательной к линии.Это так же просто, как направление между отрезками.Или, более математически, если линия описывается функцией C (t), то тангенс равен
T=∂C(t)/∂t
Теперь мы можем взять перекрестное произведение между касательной и Z_local, что дает нам нормальное значение
N(t) = Z_local × T(t)
Добавление нормального N (t) к C (t) дает нам эквидистантную кривую, параллельную C. Это позволяет нам рисовать четырехугольники:
for t in range(0, T):
T = deriv(C(t), t)
N = cross(Z_local, T)
emit_vertex(C(t) + width*N)
emit_vertex(C(t) - width*N)