угол на котором они должны быть в направлении нужного значения это половина отрезка между ними
угол не может равняться половине отрезка, это разные величины
как я понимаю, calculatePoint вычисляет точку на маленькой окружности. по идее тебе достаточно добавить эту точку к каждой точке стрелки, при условии, что стрелка задана в относительных координатах, где (0,0) — это правый край маленькой окружности.
также можно задать стрелку для 0 градусов, а потом просто применять к ней QTransform-поворот вместо своих вычислений:
C++ (Qt)
QPolygonF arrowPointingRight = {{x1, y1}, ...};
auto rotatedArrow = QTransform::fromTranslate(centerX, centerY).rotate(angle).map(arrowPointingRight);
можно такой поворот и к каждой отдельной точке применить при необходимости
З.Ы. лучше передавать double по значению