From 03078a61ad3e93213c0d720dd4bcc53e8bf798e0 Mon Sep 17 00:00:00 2001 From: Joshua Date: Fri, 2 Apr 2010 12:13:13 +0200 Subject: [PATCH] poly kernels --- Attractor.cpp | 22 ---------------------- AwesomeAttractor.cbp | 2 ++ kernels/Polynomial.cpp | 8 +++++--- kernels/PolynomialA3D.cpp | 19 +++++++++++++++++-- 4 files changed, 24 insertions(+), 27 deletions(-) diff --git a/Attractor.cpp b/Attractor.cpp index d93b0b3..b4dba1f 100644 --- a/Attractor.cpp +++ b/Attractor.cpp @@ -100,10 +100,6 @@ void Attractor::init(unsigned int dim_in, FormulaChoice formula_in, unsigned int orde = orde_in; switch (formula) { - case POLY_A: {4 - par = dim; - break; - } case LOGISTIC: { par = dim; break; @@ -213,10 +209,6 @@ void Attractor::iterate() { // calculations switch (formula) { - case POLY_A: - poly_A(); - break; - case LOGISTIC: logistic(); break; @@ -241,20 +233,6 @@ void Attractor::iterate() { #endif } -void Attractor::poly_A() { - switch (dim) { - case 3: - new_point[0] = param[0] + point[1] - point[1]*point[2]; - new_point[1] = param[1] + point[2] - point[2]*point[0]; - new_point[2] = param[2] + point[0] - point[0]*point[1]; - break; - default: - for ( unsigned int i = 0; i < dim; i++ ) { - new_point[i] = param[i] + point[(i+1) % dim] - point[(i+1) % dim]*point[(i+2) % dim]; - } - break; - } -} void Attractor::logistic() { for ( unsigned int i = 0; i < dim; i++ ) { diff --git a/AwesomeAttractor.cbp b/AwesomeAttractor.cbp index 2963061..9333f37 100644 --- a/AwesomeAttractor.cbp +++ b/AwesomeAttractor.cbp @@ -50,6 +50,8 @@ + + diff --git a/kernels/Polynomial.cpp b/kernels/Polynomial.cpp index f4dff5d..df09a14 100644 --- a/kernels/Polynomial.cpp +++ b/kernels/Polynomial.cpp @@ -57,6 +57,8 @@ void Polynomial::calculateNumberOfParameters(){ } void Polynomial::iterate() { + swap(vectorNew, vectorOld); + unsigned int m = 0; for ( unsigned int i = 0; i < dim; i++ ) { @@ -64,7 +66,7 @@ void Polynomial::iterate() { cout << "Entering new dimension: " << i << " With m = " << m << endl; #endif - new_point[i] = param[m]; + vectorNew[i] = myParameters[m]; m++; recur(i, 0, 1, m); } @@ -81,8 +83,8 @@ void Polynomial::recur(unsigned int curr_dimension, unsigned int prev_i, unsigne cout << "Calculation in dimension: " << i << " With m = " << m << " And depth = " << n << endl; #endif - product = prev_product * point[i]; - new_point[curr_dimension] += param[m] * product; + product = prev_product * vectorOld[i]; + vectorNew[curr_dimension] += myParameters[m] * product; m++; if (n < orde) { recur(curr_dimension, i, n+1, m, product); diff --git a/kernels/PolynomialA3D.cpp b/kernels/PolynomialA3D.cpp index 63dc9fb..6744280 100644 --- a/kernels/PolynomialA3D.cpp +++ b/kernels/PolynomialA3D.cpp @@ -9,11 +9,11 @@ const static unsigned int dimension = 3; const static unsigned int numberOfParameters = 3; -PolynomialA3D::PolynomialA3D(){ +PolynomialA3D::PolynomialA3D() { init(); } -void PolynomialA3D::init(){ +void PolynomialA3D::init() { myParameters = new double[numberOfParameters]; vectorNew = new double[dimension]; vectorOld = new double[dimension]; @@ -29,6 +29,21 @@ void PolynomialA3D::init(){ } } +void PolynomialA3D::iterate() { + swap(vectorNew, vectorOld); + + vectorNew[0] = myParameters[0] + vectorOld[1] - vectorOld[1]*vectorOld[2]; + vectorNew[1] = myParameters[1] + vectorOld[2] - vectorOld[2]*vectorOld[0]; + vectorNew[2] = myParameters[2] + vectorOld[0] - vectorOld[0]*vectorOld[1]; +} +/* +N dimensional: + for ( unsigned int i = 0; i < dim; i++ ) { + new_point[i] = param[i] + point[(i+1) % dim] - point[(i+1) % dim]*point[(i+2) % dim]; + } +*/ + + // setters, getters, all i/o to other classes/objects void * PolynomialA3D::getProperty(const string identifier) { if ( identifier == "dimension" ) {