Changeset View
Changeset View
Standalone View
Standalone View
source/blender/blenlib/intern/pe.c
- This file was added.
| #include "DNA_scene_types.h" | |||||
| #include "BLI_rand.h" | |||||
| #include "BLI_math.h" | |||||
| #include "BLI_pe.h" | |||||
| float BLI_pe_factor_distance(float dist, float maxdist, int falloff_type) { | |||||
| /* Originally from transform_generic.c's calculatePropRatio */ | |||||
| dist = 1.0f - dist / maxdist; | |||||
| if (dist <= 0.0f) | |||||
| return 0.0f; | |||||
| if (dist > 1.0f) | |||||
| return 1.0f; | |||||
| switch (falloff_type) { | |||||
| case PROP_SHARP: | |||||
| return dist * dist; | |||||
| case PROP_SMOOTH: | |||||
| return 3.0f * dist * dist - 2.0f * dist * dist * dist; | |||||
| case PROP_ROOT: | |||||
| return (float)sqrt(dist); | |||||
| case PROP_LIN: | |||||
| return dist; | |||||
| case PROP_CONST: | |||||
| return 1.0f; | |||||
| case PROP_SPHERE: | |||||
| return (float)sqrt(2 * dist - dist * dist); | |||||
| case PROP_RANDOM: | |||||
| return BLI_frand() * dist; | |||||
| default: | |||||
| return 1.0f; | |||||
| } | |||||
| } | |||||
| void BLI_pe_compute_factors(int totvert, float *in_dists, float *out_factors, | |||||
| float falloff_distance, int falloff_type) | |||||
| { | |||||
| int a; | |||||
| for (a = 0; a < totvert; ++a) { | |||||
| out_factors[a] = BLI_pe_factor_distance(in_dists[a], falloff_distance, falloff_type); | |||||
| } | |||||
| } | |||||