Browse Source

added stub of analyser

master
Joshua Moerman 13 years ago
parent
commit
5ba18cd1d8
  1. 119
      AwesomeAttract0r.xcodeproj/project.pbxproj
  2. 22
      Logger.hpp
  3. 72
      aatester.cpp
  4. 47
      analyse.hpp
  5. 2
      kernels/Polynomial.hpp
  6. 4
      main.cpp

119
AwesomeAttract0r.xcodeproj/project.pbxproj

@ -15,10 +15,29 @@
01C5704413B63BBE009D151B /* Normalizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01C5704213B63BBE009D151B /* Normalizer.cpp */; }; 01C5704413B63BBE009D151B /* Normalizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01C5704213B63BBE009D151B /* Normalizer.cpp */; };
01C5707E13B63CF9009D151B /* libpng.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 01C5707D13B63CF9009D151B /* libpng.a */; }; 01C5707E13B63CF9009D151B /* libpng.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 01C5707D13B63CF9009D151B /* libpng.a */; };
4214149414A9D9B6004016D6 /* libboost_program_options.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 4214149314A9D9B6004016D6 /* libboost_program_options.dylib */; }; 4214149414A9D9B6004016D6 /* libboost_program_options.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 4214149314A9D9B6004016D6 /* libboost_program_options.dylib */; };
42CA52B9151F93940098800C /* libpng.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 01C5707D13B63CF9009D151B /* libpng.a */; };
42CA52BA151F93960098800C /* libboost_program_options.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 4214149314A9D9B6004016D6 /* libboost_program_options.dylib */; };
42CA52BB151F93A90098800C /* Projector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01C5700713B63AF0009D151B /* Projector.cpp */; };
42CA52BC151F93AB0098800C /* Projection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01C5704013B63BBE009D151B /* Projection.cpp */; };
42CA52BD151F93AE0098800C /* Normalizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01C5704213B63BBE009D151B /* Normalizer.cpp */; };
42CA52BE151F93B30098800C /* AttractorKernel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01C5700F13B63AF0009D151B /* AttractorKernel.cpp */; };
42CA52BF151F93BA0098800C /* stf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01C5703113B63B78009D151B /* stf.cpp */; };
42CA52C0151F93CF0098800C /* Attractor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01C5701113B63AF0009D151B /* Attractor.cpp */; };
42CA52C2151F93E40098800C /* aatester.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CA52C1151F93E40098800C /* aatester.cpp */; };
42CA52C3151F93FC0098800C /* aatester.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CA52C1151F93E40098800C /* aatester.cpp */; };
8DD76F650486A84900D96B5E /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 08FB7796FE84155DC02AAC07 /* main.cpp */; settings = {ATTRIBUTES = (); }; }; 8DD76F650486A84900D96B5E /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 08FB7796FE84155DC02AAC07 /* main.cpp */; settings = {ATTRIBUTES = (); }; };
/* End PBXBuildFile section */ /* End PBXBuildFile section */
/* Begin PBXCopyFilesBuildPhase section */ /* Begin PBXCopyFilesBuildPhase section */
42CA52AB151F93650098800C /* CopyFiles */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = /usr/share/man/man1/;
dstSubfolderSpec = 0;
files = (
);
runOnlyForDeploymentPostprocessing = 1;
};
8DD76F690486A84900D96B5E /* CopyFiles */ = { 8DD76F690486A84900D96B5E /* CopyFiles */ = {
isa = PBXCopyFilesBuildPhase; isa = PBXCopyFilesBuildPhase;
buildActionMask = 8; buildActionMask = 8;
@ -68,12 +87,24 @@
4299F17414B256F700EDE788 /* std_string_ext.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = std_string_ext.hpp; path = stfu/std_string_ext.hpp; sourceTree = "<group>"; }; 4299F17414B256F700EDE788 /* std_string_ext.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = std_string_ext.hpp; path = stfu/std_string_ext.hpp; sourceTree = "<group>"; };
4299F17814B2579B00EDE788 /* stf_input.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = stf_input.hpp; path = stfu/stf_input.hpp; sourceTree = "<group>"; }; 4299F17814B2579B00EDE788 /* stf_input.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = stf_input.hpp; path = stfu/stf_input.hpp; sourceTree = "<group>"; };
4299F17914B2579B00EDE788 /* stf_output.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = stf_output.hpp; path = stfu/stf_output.hpp; sourceTree = "<group>"; }; 4299F17914B2579B00EDE788 /* stf_output.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = stf_output.hpp; path = stfu/stf_output.hpp; sourceTree = "<group>"; };
42CA52A7151F70F00098800C /* analyse.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = analyse.hpp; sourceTree = "<group>"; };
42CA52AD151F93650098800C /* AATester */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = AATester; sourceTree = BUILT_PRODUCTS_DIR; };
42CA52C1151F93E40098800C /* aatester.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = aatester.cpp; sourceTree = "<group>"; };
42CEC38414AB797200C3AEDA /* Random.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Random.hpp; sourceTree = "<group>"; }; 42CEC38414AB797200C3AEDA /* Random.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Random.hpp; sourceTree = "<group>"; };
42CEC38614ABB85200C3AEDA /* stf_ext.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = stf_ext.hpp; path = stfu/stf_ext.hpp; sourceTree = "<group>"; }; 42CEC38614ABB85200C3AEDA /* stf_ext.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = stf_ext.hpp; path = stfu/stf_ext.hpp; sourceTree = "<group>"; };
42CEC38714ABC2C000C3AEDA /* UnravelHeart3D.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = UnravelHeart3D.hpp; path = kernels/UnravelHeart3D.hpp; sourceTree = "<group>"; }; 42CEC38714ABC2C000C3AEDA /* UnravelHeart3D.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = UnravelHeart3D.hpp; path = kernels/UnravelHeart3D.hpp; sourceTree = "<group>"; };
/* End PBXFileReference section */ /* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */ /* Begin PBXFrameworksBuildPhase section */
42CA52AA151F93650098800C /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
42CA52B9151F93940098800C /* libpng.a in Frameworks */,
42CA52BA151F93960098800C /* libboost_program_options.dylib in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
8DD76F660486A84900D96B5E /* Frameworks */ = { 8DD76F660486A84900D96B5E /* Frameworks */ = {
isa = PBXFrameworksBuildPhase; isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
@ -146,7 +177,9 @@
01C5701013B63AF0009D151B /* Attractor.hpp */, 01C5701013B63AF0009D151B /* Attractor.hpp */,
01C5701113B63AF0009D151B /* Attractor.cpp */, 01C5701113B63AF0009D151B /* Attractor.cpp */,
08FB7796FE84155DC02AAC07 /* main.cpp */, 08FB7796FE84155DC02AAC07 /* main.cpp */,
42CA52C1151F93E40098800C /* aatester.cpp */,
428981DF14BA1EB1000C437F /* render.hpp */, 428981DF14BA1EB1000C437F /* render.hpp */,
42CA52A7151F70F00098800C /* analyse.hpp */,
428981DD14BA1D72000C437F /* output.hpp */, 428981DD14BA1D72000C437F /* output.hpp */,
); );
name = Source; name = Source;
@ -156,6 +189,7 @@
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
01C5701613B63AF0009D151B /* AwesomeAttract0r */, 01C5701613B63AF0009D151B /* AwesomeAttract0r */,
42CA52AD151F93650098800C /* AATester */,
); );
name = Products; name = Products;
sourceTree = "<group>"; sourceTree = "<group>";
@ -192,6 +226,23 @@
/* End PBXGroup section */ /* End PBXGroup section */
/* Begin PBXNativeTarget section */ /* Begin PBXNativeTarget section */
42CA52AC151F93650098800C /* AATester */ = {
isa = PBXNativeTarget;
buildConfigurationList = 42CA52B4151F93650098800C /* Build configuration list for PBXNativeTarget "AATester" */;
buildPhases = (
42CA52A9151F93650098800C /* Sources */,
42CA52AA151F93650098800C /* Frameworks */,
42CA52AB151F93650098800C /* CopyFiles */,
);
buildRules = (
);
dependencies = (
);
name = AATester;
productName = AATester;
productReference = 42CA52AD151F93650098800C /* AATester */;
productType = "com.apple.product-type.tool";
};
8DD76F620486A84900D96B5E /* AwesomeAttract0r */ = { 8DD76F620486A84900D96B5E /* AwesomeAttract0r */ = {
isa = PBXNativeTarget; isa = PBXNativeTarget;
buildConfigurationList = 1DEB923108733DC60010E9CD /* Build configuration list for PBXNativeTarget "AwesomeAttract0r" */; buildConfigurationList = 1DEB923108733DC60010E9CD /* Build configuration list for PBXNativeTarget "AwesomeAttract0r" */;
@ -233,11 +284,26 @@
projectRoot = ""; projectRoot = "";
targets = ( targets = (
8DD76F620486A84900D96B5E /* AwesomeAttract0r */, 8DD76F620486A84900D96B5E /* AwesomeAttract0r */,
42CA52AC151F93650098800C /* AATester */,
); );
}; };
/* End PBXProject section */ /* End PBXProject section */
/* Begin PBXSourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */
42CA52A9151F93650098800C /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
42CA52C3151F93FC0098800C /* aatester.cpp in Sources */,
42CA52BB151F93A90098800C /* Projector.cpp in Sources */,
42CA52BC151F93AB0098800C /* Projection.cpp in Sources */,
42CA52BD151F93AE0098800C /* Normalizer.cpp in Sources */,
42CA52BE151F93B30098800C /* AttractorKernel.cpp in Sources */,
42CA52BF151F93BA0098800C /* stf.cpp in Sources */,
42CA52C0151F93CF0098800C /* Attractor.cpp in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
8DD76F640486A84900D96B5E /* Sources */ = { 8DD76F640486A84900D96B5E /* Sources */ = {
isa = PBXSourcesBuildPhase; isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
@ -249,6 +315,7 @@
01C5703213B63B78009D151B /* stf.cpp in Sources */, 01C5703213B63B78009D151B /* stf.cpp in Sources */,
01C5704313B63BBE009D151B /* Projection.cpp in Sources */, 01C5704313B63BBE009D151B /* Projection.cpp in Sources */,
01C5704413B63BBE009D151B /* Normalizer.cpp in Sources */, 01C5704413B63BBE009D151B /* Normalizer.cpp in Sources */,
42CA52C2151F93E40098800C /* aatester.cpp in Sources */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@ -330,6 +397,50 @@
}; };
name = Debug; name = Debug;
}; };
42CA52B5151F93650098800C /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
ARCHS = "$(ARCHS_STANDARD_64_BIT)";
COPY_PHASE_STRIP = NO;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO;
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 10.7;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Debug;
};
42CA52B6151F93650098800C /* Release with Symbols */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
ARCHS = "$(ARCHS_STANDARD_64_BIT)";
COPY_PHASE_STRIP = YES;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 10.7;
PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = macosx;
};
name = "Release with Symbols";
};
/* End XCBuildConfiguration section */ /* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */ /* Begin XCConfigurationList section */
@ -351,6 +462,14 @@
defaultConfigurationIsVisible = 0; defaultConfigurationIsVisible = 0;
defaultConfigurationName = Debug; defaultConfigurationName = Debug;
}; };
42CA52B4151F93650098800C /* Build configuration list for PBXNativeTarget "AATester" */ = {
isa = XCConfigurationList;
buildConfigurations = (
42CA52B5151F93650098800C /* Debug */,
42CA52B6151F93650098800C /* Release with Symbols */,
);
defaultConfigurationIsVisible = 0;
};
/* End XCConfigurationList section */ /* End XCConfigurationList section */
}; };
rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; rootObject = 08FB7793FE84155DC02AAC07 /* Project object */;

22
Logger.hpp

@ -10,24 +10,24 @@
extern int verbose; extern int verbose;
enum LoggingLevels {
LOG_ERROR,
LOG_INFO,
LOG_VERBOSE,
LOG_DEBUG
};
#define LogDebug(s, ...) \ #define LogDebug(s, ...) \
if ( verbose >= 3 ) printf(s, ##__VA_ARGS__); if ( verbose >= LOG_DEBUG ) printf(s, ##__VA_ARGS__);
#define LogMoreInfo(s, ...) \ #define LogMoreInfo(s, ...) \
if ( verbose >= 2 ) printf(s, ##__VA_ARGS__); if ( verbose >= LOG_VERBOSE ) printf(s, ##__VA_ARGS__);
#define LogInfo(s, ...) \ #define LogInfo(s, ...) \
if ( verbose >= 1 ) printf(s, ##__VA_ARGS__); if ( verbose >= LOG_INFO ) printf(s, ##__VA_ARGS__);
#define LogError(s, ...) \ #define LogError(s, ...) \
if ( verbose >= 0 ) { printf("%s, %s(), %d: ", __FILE__, __func__, __LINE__); printf(s, ##__VA_ARGS__); } if ( verbose >= LOG_ERROR ) { printf("%s, %s(), %d: ", __FILE__, __func__, __LINE__); printf(s, ##__VA_ARGS__); }
enum LoggingLevels {
LOG_ERROR,
LOG_INFO,
LOG_VERBOSE,
LOG_DEBUG
};
/* /*
Imported from Astrant: Imported from Astrant:

72
aatester.cpp

@ -0,0 +1,72 @@
//
// aatester.cpp
// AwesomeAttract0r
//
// Created by Joshua Moerman on 3/25/12.
// Copyright (c) 2012 Vadovas. All rights reserved.
//
#include <iostream>
#include <vector>
#include "Logger.hpp"
#include "analyse.hpp"
#define LOG(s, p) \
logger.start(s); \
p \
logger.stop()
int verbose = 0;
Logger logger(std::cout, LOG_VERBOSE);
inline double test(const int dimension, const double doubling, const double percentage){
LOG("making vector",
srand(time(0));
std::vector<double *> buffer(1000000);
);
LOG("making random data",
for(auto & p : buffer){
p = new double[dimension];
for(unsigned int i = 2;i < dimension; ++i){
p[i] = rand() / (double) RAND_MAX - 0.5;
}
p[0] = p[1]*p[1];
p[1] = std::sin(5.0*p[2]);
});
LOG("calculate fractal dimension",
double f = fractal_dimension(buffer.begin(), buffer.end(), dimension, doubling, percentage);
);
LOG("freeing data",
for(auto & p : buffer){
delete[] p;
p = 0;
});
return f;
}
int main(){
double percentages[] = {0.00015, 0.00010, 0.00006, 0.00004, 0.000015};
std::cout << "... |";
for(auto p : percentages) std::cout << "\t" << p;
std::cout << std::endl << "----------------------------------------------" << std::endl;
for (double doubling = 2.0; doubling <= 3.0; doubling += 0.1){
std::cout << doubling << " |";
for (auto p : percentages){
double sse = 0;
for (int i = 3; i <= 6; ++i) {
for(int j = 0; j < 20; ++j) {
double e = (i-2) - test(i, doubling, p);
sse += e*e;
}
}
std::cout << "\t" << sse;
}
std::cout << std::endl;
}
}

47
analyse.hpp

@ -0,0 +1,47 @@
//
// analyse.hpp
// AwesomeAttract0r
//
// Created by Joshua Moerman on 3/25/12.
// Copyright (c) 2012 Vadovas. All rights reserved.
//
#ifndef AwesomeAttract0r_analyse_hpp
#define AwesomeAttract0r_analyse_hpp
#include <cmath>
inline double distance_squared(double * p1, double * p2, size_t dimension){
double s = 0;
for(unsigned int i = 0; i < dimension; ++i){
s += (p1[i] - p2[i]) * (p1[i] - p2[i]);
}
return s;
}
template <typename Iterator>
double fractal_dimension(Iterator begin, Iterator end, size_t const dimension, const double doubling = 2.4, const double percentage = 0.00004) {
const double size = std::pow(percentage, 1.0 / 3.0);
//const double size = std::pow(percentage, 1.0 / dimension);
const double totalSize = std::sqrt(dimension);
unsigned int counts[2] = {};
double r = size * totalSize;
while(begin != end){
auto x0 = *begin++;
for(unsigned int i = 0; i < 200 && begin != end; ++i){
auto x = *begin++;
auto d = distance_squared(x, x0, dimension);
if( d <= r*r )
++counts[0];
if( d <= doubling*doubling*r*r )
++counts[1];
}
}
return std::log((double) counts[1] / (double) counts[0]) / std::log(doubling);
}
#endif

2
kernels/Polynomial.hpp

@ -3,7 +3,7 @@
#include "../AttractorKernel.hpp" #include "../AttractorKernel.hpp"
unsigned int calculateNumberOfParameters(const unsigned int dimension, const unsigned int orde) { inline unsigned int calculateNumberOfParameters(const unsigned int dimension, const unsigned int orde) {
double n_coef = orde + 1; double n_coef = orde + 1;
for(unsigned int i = 2; i <= dimension; i++) { for(unsigned int i = 2; i <= dimension; i++) {
n_coef = n_coef*(orde + i)/(i - 1); n_coef = n_coef*(orde + i)/(i - 1);

4
main.cpp

@ -17,7 +17,7 @@ namespace po = boost::program_options;
#include "render.hpp" #include "render.hpp"
int verbose = 4; int verbose = LOG_DEBUG;
Logger logger(std::cout, LOG_VERBOSE); Logger logger(std::cout, LOG_VERBOSE);
std::string generate_filename(){ std::string generate_filename(){
@ -31,7 +31,7 @@ std::string generate_filename(){
void save_stf(stfu::node & stf_output, std::string const & filename){ void save_stf(stfu::node & stf_output, std::string const & filename){
stf_output.addValue("version") = __DATE__" "__TIME__; stf_output.addValue("version") = __DATE__" "__TIME__;
stf_output.addValue("notes") = "This is the version with `cheap` blur and random colours"; stf_output.addValue("notes") = "This is the version with somewhat better blur (circle) and random colours";
std::string path(filename + ".stf"); std::string path(filename + ".stf");
std::ofstream file(path.c_str()); std::ofstream file(path.c_str());
file << stf_output << std::endl; file << stf_output << std::endl;