vec3 ParticleFieldFunctions::flameold(vec4 pos) { vec3 retVal ; //double theta = getTheta(pos); double scale = sin(0.8+(pos.y*M_PI*10))/40.0; retVal.x = pos.x*scale; retVal.z = pos.z*scale; if ( ! pos.y >= 0.5 ) { retVal *= -1.0 ; } retVal.y = ParticleSystem::rangeRandom(0.0015,0.0025) ; //attractor code!!! attractor atr_top ; atr_top.power = 0.05 ; atr_top.position = vec3(0.0, 0.15, 0.0) ; atr_top.range = .02; // get the distance from the attractor vec3 woah = atr_top.position - xyz(pos) ; float distanceSquare = length(woah) * length(woah); if ( distanceSquare >= 0.05 ){ woah /= distanceSquare ; } woah *= atr_top.power ; /* if( length(atr_top.position -xyz(pos)) < atr_top.range) { retVal.x = retVal.x + woah.x ; retVal.y = retVal.y + woah.y ; retVal.z = retVal.z + woah.z ; } */ return retVal; }
vec3 ParticleFieldFunctions::up(vec4 pos, Parameters* parameters) { return vec3(0.0,0.005,0.0); }
vec3 ParticleFieldFunctions::fixed(vec4 pos) { return vec3(0.0,0.0,0.0); }