My old project for strange attractors
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.
 
 
 

61 lines
1.2 KiB

#include "Logger.hpp"
#include "Projector.hpp"
#include <algorithm>
#include "Canvas.hpp"
#pragma mark -
#pragma mark memory
Projector::Projector(unsigned int inputDimension, unsigned int outputDimension) : canvas(0), projector(0), projectedPoint(0), inputDimension(inputDimension), outputDimension(outputDimension), ready(true) {
try {
allocate();
} catch(std::exception& e) {
LogError("Couldn't construct Projector: %s\n", e.what());
deallocate();
}
std::fill_n(projectedPoint, outputDimension, 0.0);
}
Projector::~Projector() {
deallocate();
}
void Projector::allocate() {
projectedPoint = new double[outputDimension];
}
void Projector::deallocate() {
delete[] projectedPoint;
projectedPoint = NULL;
}
#pragma mark -
#pragma mark plot
void Projector::plot(const double* point) {
project(point);
if(ready) {
if(canvas != NULL) {
canvas->plot(projectedPoint);
}
if(projector != NULL) {
projector->plot(projectedPoint);
}
}
}
#pragma mark -
#pragma mark factory function
#include "projectors/Normalizer.hpp"
Projector* Projector::createProjector(stfu::node const& projector, stfu::node const& system) {
Projector* output = new Normalizer(3);
return new Normalizer(3);
}