Joshua Moerman
14 years ago
4 changed files with 54 additions and 1 deletions
@ -0,0 +1,8 @@ |
|||||
|
AttractorKernel: { |
||||
|
type: "unravel heart" |
||||
|
dimensions: "3" |
||||
|
} |
||||
|
Projector: "Projector" |
||||
|
Projector: { |
||||
|
} |
||||
|
|
@ -1,2 +1,2 @@ |
|||||
#!/bin/bash |
#!/bin/bash |
||||
while true; do ./AwesomeAttractor -P /var/www/joshua/render/lomp/ -R -I 10000 -W 100 -H 100 -v attractors/emptyUnravel3D.stf; done |
while true; do ./bin/Release/AwesomeAttractor -R -I 10 -W 400 -H 400 -v attractors/emptyUnravelHeart3D.stf; done |
||||
|
@ -0,0 +1,37 @@ |
|||||
|
|
||||
|
#ifndef UNRAVELHEART3D_HPP |
||||
|
#define UNRAVELHEART3D_HPP |
||||
|
|
||||
|
#include "../AttractorKernel.hpp" |
||||
|
|
||||
|
#include <cmath> |
||||
|
|
||||
|
class UnravelHeart3D : public AttractorKernel { |
||||
|
public: |
||||
|
UnravelHeart3D(): |
||||
|
AttractorKernel(3, 8) {} |
||||
|
|
||||
|
virtual std::string type() { return "unravel heart"; }; |
||||
|
|
||||
|
virtual void operator()() { |
||||
|
std::swap(vectorNew, vectorOld); |
||||
|
|
||||
|
vectorNew[0] = parameters[0]*(vectorOld[2] + parameters[1]); |
||||
|
vectorNew[1] = parameters[2]*(vectorOld[0] + parameters[3]); |
||||
|
vectorNew[2] = parameters[4]*(vectorOld[1] + parameters[5]); |
||||
|
|
||||
|
const double dist = vectorNew[0]*vectorNew[0] + vectorNew[1]*vectorNew[1] + 2.0*vectorNew[2]*vectorNew[2]; |
||||
|
|
||||
|
if(parameters[7] * dist - parameters[7] > vectorNew[0]*vectorNew[0]*vectorNew[1]*vectorNew[1]*vectorNew[1]) { |
||||
|
const double sqrtDist = std::sqrt(dist); |
||||
|
const double p = 1.0 - parameters[6] * (static_cast<int>(sqrtDist / parameters[6]) + 1.0) / sqrtDist; |
||||
|
vectorNew[0] *= p; |
||||
|
vectorNew[1] *= p; |
||||
|
vectorNew[2] *= p; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
}; |
||||
|
|
||||
|
#endif // UNRAVEL_HPP
|
||||
|
|
Reference in new issue