diff --git a/Attractor.cpp b/Attractor.cpp
index cfd8f94..0a914ae 100644
--- a/Attractor.cpp
+++ b/Attractor.cpp
@@ -22,8 +22,36 @@ Attractor::Attractor(const std::string& filename) : kernel(0), projector(0) {
}
Attractor::Attractor(){
- LogError("Not implemented yet (random attractor)\n");
- exit(1);
+ stfu::node kernel_node;
+ switch(rand()%5){
+ case 0:
+ kernel_node.value("type") = "lorenz";
+ kernel_node.value("dimensions") = "3";
+ break;
+ case 1:
+ kernel_node.value("type") = "polynomial";
+ kernel_node.value("dimensions") = std::string() + (char)(rand()%3 + '2');
+ break;
+ case 2:
+ kernel_node.value("type") = "polynomial a";
+ kernel_node.value("dimensions") = "3";
+ break;
+ case 3:
+ kernel_node.value("type") = "logistic";
+ kernel_node.value("dimensions") = std::string() + (char)(rand()%3 + '2');
+ break;
+ case 4:
+ kernel_node.value("type") = "unravel";
+ kernel_node.value("dimensions") = "3";
+ break;
+ }
+
+ kernel = AttractorKernel::createAttractorKernel(kernel_node);
+
+ stfu::node projector_node;
+ projector_node.value("dimensions") = "2";
+
+ projector = Projector::createProjector(projector_node, projector_node);
}
Attractor::~Attractor() {
diff --git a/AwesomeAttractor.cbp b/AwesomeAttractor.cbp
index 0e449e3..889be03 100644
--- a/AwesomeAttractor.cbp
+++ b/AwesomeAttractor.cbp
@@ -52,6 +52,9 @@
+
+
+
@@ -67,9 +70,7 @@
-
-
-
+
@@ -89,9 +90,7 @@
-
-
-
+
diff --git a/Logger.hpp b/Logger.hpp
index fcb9777..d2cf192 100644
--- a/Logger.hpp
+++ b/Logger.hpp
@@ -15,7 +15,7 @@ extern int verbose;
if ( verbose >= 1 ) printf(s, ##__VA_ARGS__);
#define LogError(s, ...) \
- if ( verbose >= 0 ) { printf("%s, %d: ", __FILE__, __LINE__); printf(s, ##__VA_ARGS__); }
+ if ( verbose >= 0 ) { printf("%s, %s(), %d: ", __FILE__, __func__, __LINE__); printf(s, ##__VA_ARGS__); }
diff --git a/Projector.cpp b/Projector.cpp
index 8e2607e..4d26bbd 100644
--- a/Projector.cpp
+++ b/Projector.cpp
@@ -53,8 +53,11 @@ void Projector::plot(const double* point) {
#include "projectors/Normalizer.hpp"
-Projector* Projector::createProjector(stfu::node const& projector, stfu::node const& system) {
- Projector* output = new Normalizer(3);
+Projector* Projector::createProjector(stfu::node& projector, stfu::node& system) {
+ const std::string attractorDimension = projector.getValue("dimensions");
+ const unsigned int dimension = atoi(attractorDimension.c_str());
+
+ Projector* output = new Normalizer(dimension);
return output;
}
diff --git a/Projector.hpp b/Projector.hpp
index fd0e492..39d9351 100644
--- a/Projector.hpp
+++ b/Projector.hpp
@@ -33,7 +33,7 @@ public:
void plot(const double* point);
// factory function
- static Projector* createProjector(stfu::node const& projector, stfu::node const& system);
+ static Projector* createProjector(stfu::node& projector, stfu::node& system);
};
#endif // PROJECTOR_HPP
diff --git a/main.cpp b/main.cpp
index 90dd633..08160ce 100644
--- a/main.cpp
+++ b/main.cpp
@@ -1,8 +1,8 @@
#include "Logger.hpp"
#include
#include
-#include
#include
+#include
#include "Attractor.hpp"
#include "Canvas.hpp"
@@ -40,6 +40,7 @@ int main(int argc, char* argv[]) {
unsigned int iterations = DEFAULT_ITERATIONS;
unsigned int width = DEFAULT_WIDTH;
unsigned int height = DEFAULT_HEIGHT;
+ srand(time(0));
if(argc <= 1) {
showHelpText();