static float *make_gausstab(int filtertype, int rad) { float *gausstab, sum, val; int i, n; n = 2 * rad + 1; gausstab = (float *) MEM_mallocN(n * sizeof(float), "gauss"); sum = 0.0f; for (i = -rad; i <= rad; i++) { val = RE_filter_value(filtertype, (float)i / (float)rad); sum += val; gausstab[i + rad] = val; } sum = 1.0f / sum; for (i = 0; i < n; i++) gausstab[i] *= sum; return gausstab; }
float *BlurBaseOperation::make_gausstab(float rad, int size) { float *gausstab, sum, val; int i, n; n = 2 * size + 1; gausstab = (float *)MEM_mallocN(sizeof(float) * n, __func__); sum = 0.0f; float fac = (rad > 0.0f ? 1.0f / rad : 0.0f); for (i = -size; i <= size; i++) { val = RE_filter_value(this->m_data.filtertype, (float)i * fac); sum += val; gausstab[i + size] = val; } sum = 1.0f / sum; for (i = 0; i < n; i++) gausstab[i] *= sum; return gausstab; }