Один из способов создания радиального градиента может состоять в том, чтобы определить точку фокусировки, а также степень градиента, и когда вы генерируете изображение, вы рассчитаете расстояние между текущим пикселем и точкой фокусировки, разделите его по степени градиента и обрежьте результат до 1. Затем используйте формулу в вопросе, который вы связали.
Примерно так: псевдокод:
double d = distance(currentPixel, focusPoint); //I'll leave the implementation for you
double factor = Math.max(1.0, d/extent);
int red = (int) (firstCol.getRed() * factor + secondCol.getRed() * (1.0 - factor) );
int green= (int) firstCol.getGreen() * factor + secondCol.getGreen()* (1.0 - factor) );
int blue = (int) (firstCol.getBlue() * factor + secondCol.getBlue()* (1.0 - factor) );
Это будет означать, что чем дальше пиксель от точки фокусировки, тем больше firstCol
будет способствовать этому (пиксели, находящиеся за пределами градиента, будут использовать только firstCol
, поскольку factor
должно быть 1.0
для тех).