}
public Vector2 CalculateGradient(Vector2 r) {
float lenSq = r.getLengthSqaured();
if (lenSq > theKernelSizeSquared) {
return new Vector2(0.0f, 0.0f);
}
if (lenSq < Constants.FLOAT_EPSILON) {
lenSq = Constants.FLOAT_EPSILON;
}
float len = (float) Math.sqrt((double) lenSq);
float f = theFactorIntermediate * (theKernelSize - len)
* (theKernelSize - len) / len;
return new Vector2(r.x * f, r.y * f);
}