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.
69 lines
1.6 KiB
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;
|
|
}
|
|
|