My old project for strange attractors, new approach
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.
 
 

69 lines
1.6 KiB

//
// main.cpp
// AwesomeAttractorND
//
// Created by Joshua Moerman on 10/24/11.
// Copyright 2011 Vadovas. All rights reserved.
//
#include <iostream>
#include "array.hpp"
#include "Logging.hpp"
#include "Canvas.hpp"
#include "Tonemapper.hpp"
#include "Image.hpp"
#include "Vectors.hpp"
#include "AttractorKernel.hpp"
typedef Canvas2D Canvas;
double unit_random(){
return rand()/ (double) RAND_MAX * 2.0 - 1.0;
}
void fill(Canvas & canvas){
std::array<double, 10000> vectors;
std::array<double, 10000> old_vectors;
std::generate(vectors.begin(), vectors.end(), unit_random);
std::generate(old_vectors.begin(), old_vectors.end(), unit_random);
StaticAttractorKernel<Unravel> magic;
const unsigned int it = 100000;
for (unsigned int i = 0; i < it; ++i){
std::array<double, 10000> & v = (i%2 == 1) ? vectors : old_vectors;
std::array<double, 10000> & vo = (i%2 == 0) ? vectors : old_vectors;
magic.iterate(VectorIterator::begin(v, 3), VectorIterator::end(v, 3), VectorIterator::begin(vo, 3));
for(VectorIterator it = VectorIterator::begin(v, 3); it != VectorIterator::end(v, 3); ++it)
canvas.plot(*it);
}
}
void output(Canvas const & canvas){
Tonemappers::GammaCorrector tonemapper;
tonemapper.analyse(canvas);
ImageFormats::bmp::bitmap_stream<> image(canvas.size<0>(), canvas.size<1>(), "test.bmp");
tonemapper.process(canvas, image);
}
int main (int, const char * []){
Logger l(std::cout);
l.start("all");
l.log("creating canvas");
Canvas canvas(4000, 4000);
l.log("filling canvas");
fill(canvas);
l.log("outputting canvas");
output(canvas);
l.stop();
return 0;
}