Я не уверен на 100%, как работает этот градиент, но из того, что вы написали, я предполагаю, что вы просто хотите, чтобы длина линии от начальной точки доходила до края прямоугольника.
Если это так, вам просто нужно сделать тригонометрию.Давайте назовем расстояние x и угол a.
между 0 и 45 градусами: ширина = xcos (a), поэтому x = ширина / cos (a)
между 45 и 90 градусами: высота= xsin (a), поэтому x = высота / грех (a)
Между 90 и 135 градусами мы переместились в новый угол.Здесь x = высота / cos (a-90).
между 135 и 180 x = ширина / грех (a-90)
между 180 и 225 мы снова сдвинули угол.Здесь x = ширина / cos (a-180).
от 225 до 270 x = высота / грех (a-180)
Последний угол!От 270 до 315 x = высота / грех (a-270)
И, наконец, от 315 до 360 x = ширина / cos (a-270)
Некоторые из них, вероятно, упрощаются, но это проще всегодумать о линии, начинающейся в нижнем левом углу, направленной вправо и вращающейся против часовой стрелки, что и происходит при расчете начальной точки.