From fb68eed64f548d090eb550047fd0d898e4e033fc Mon Sep 17 00:00:00 2001 From: Tim Redfern Date: Sun, 8 Jul 2018 12:22:06 +0100 Subject: add altered AChaoslib --- gui/libs/ofxAChaosLib/src/AChaosCollatz.h | 58 +++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 gui/libs/ofxAChaosLib/src/AChaosCollatz.h (limited to 'gui/libs/ofxAChaosLib/src/AChaosCollatz.h') diff --git a/gui/libs/ofxAChaosLib/src/AChaosCollatz.h b/gui/libs/ofxAChaosLib/src/AChaosCollatz.h new file mode 100644 index 0000000..f57d7b7 --- /dev/null +++ b/gui/libs/ofxAChaosLib/src/AChaosCollatz.h @@ -0,0 +1,58 @@ +/* + 32/64 bits A-Chaos Lib in openFrameworks + (c) s373.net/x 2004, 2012, 2015 + http://s373.net/code/A-Chaos-Lib/A-Chaos.html + programmed by Andre Sier, revised 2015 + License: MIT +*/ + +#pragma once +#include "AChaosBase.h" + +class AChaosCollatz : public AChaosBase { +public: + + long value, offset; + bool mode; + + + AChaosCollatz(){} + ~AChaosCollatz(){} + + vector param_labels={"","offset"}; + + virtual void setup(REAL * params = NULL){ + AChaosBase::init(params, 3, 1); + + if(params==NULL){ + //init + value = offset = 0; + mode = 0; + + REAL p[3] = {(REAL)value,(REAL)offset,(REAL)mode}; + set(p); + } else { set(params); } + } + + void reset(){ + value = (long) iv[0]; + offset = (long) iv[1]; + mode = iv[2]>0; + } + + void calc(){ + + short int stub = value % 2; //par ou impar + + if(!mode) { // L.Collatz collatz mode + if (!stub) value /= 2; //par ]e metade + else value = 3*value+1; //impar ]e 3n+1 + } + else if (mode) { // Terras collatz mode + if (!stub) value /= 2; //par ]e metade + else value = 0.5*(3*value+1); //impar ]e 1/2(3n+1) + } + + ov[0] = (REAL)value; + } +}; \ No newline at end of file -- cgit v1.2.3