More turtles
authorSam Moore <matches@ucc.asn.au>
Sat, 4 Oct 2014 13:04:57 +0000 (21:04 +0800)
committerSam Moore <matches@ucc.asn.au>
Sat, 4 Oct 2014 13:04:57 +0000 (21:04 +0800)
Also we can't take logarithms of negative numbers, dur

src/Makefile
src/debugscript.cpp
src/gmprat.h
src/main.h
src/real.h
src/turtles_all_the_way_down.script

index fd0b81b..23930b6 100644 (file)
@@ -36,7 +36,9 @@ BIN = ../bin/ipdf
 REALTYPE=1
 CONTROLPANEL=enabled
 QUADTREE=disabled
-DEF = -DREALTYPE=$(REALTYPE) 
+DEF = -DREALTYPE=$(REALTYPE)
+
+
 
 ## Only link with things we care about
 
index 7ca6d98..c2cc2ef 100644 (file)
@@ -243,8 +243,8 @@ void DebugScript::PrintPerformance(View * view, Screen * scr)
        printf("%d\t%lu\t%lu\t%s\t%f\t%s\t%f\t%s\t%f\t%lu\n",
                now.object_count, (uint64_t)now.clock,
                (uint64_t)(now.clock - m_perf_last.clock),
-               Str(now.view_bounds.x).c_str(), Log10(now.view_bounds.x),
-               Str(now.view_bounds.y).c_str(), Log10(now.view_bounds.y),
+               Str(now.view_bounds.x).c_str(), Log10(Abs(now.view_bounds.x)),
+               Str(now.view_bounds.y).c_str(), Log10(Abs(now.view_bounds.y)),
                Str(now.view_bounds.w).c_str(), Log10(now.view_bounds.w),
                Size(now.view_bounds.w));
        m_perf_last = now;
index f5a2f1f..c19d95d 100644 (file)
@@ -122,7 +122,7 @@ inline std::ostream & operator<<(std::ostream & os, const Gmprat & fith)
 inline std::string Str(const Gmprat & g) {return g.Str();}
 inline double Log10(const Gmprat & g) {return g.Log10();}
 inline size_t Size(const Gmprat & g) {return g.Size();}
-
+inline Gmprat Abs(const Gmprat & g) {return g.Abs();}
 
 
 #endif //_GMPRAT_H
index 108e392..1f057ea 100644 (file)
@@ -79,7 +79,7 @@ void MainLoop(Document & doc, Screen & scr, View & view, int max_frames = -1)
        // order is important... segfaults occur when screen (which inits GL) is not constructed first -_-
        DebugScript script;
 
-       scr.DebugFontInit("fonts/DejaVuSansMono.ttf");
+       scr.DebugFontInit("fonts/DejaVuSansMono.ttf", 32);
        scr.SetMouseHandler(RatCatcher);
 
        if (script_filename)
@@ -129,6 +129,11 @@ void MainLoop(Document & doc, Screen & scr, View & view, int max_frames = -1)
                        printf("%lu\t%f\t%f\t%f\t%f\t%f\t%f\n", (long unsigned int)frames, total_real_time, total_cpu_time, total_gpu_time, real_frame, cpu_frame, gpu_frame);
                        data_points++;
                }
+               
+               scr.DebugFontPrintF("View Width = %s m\n", Str(view.GetBounds().w * VReal(22e-3)).c_str());
+               scr.DebugFontPrintF("Similar size: %s\n", HumanScale(view.GetBounds().w * VReal(22e-3)));
+               
+               #if 0
                scr.DebugFontPrintF("Rendered frame %lu\n", (uint64_t)frames);
                scr.DebugFontPrintF("Lazy Rendering = %d\n", view.UsingLazyRendering());
                if (cpu_frame > 0 && total_cpu_time > 0)
@@ -170,6 +175,8 @@ void MainLoop(Document & doc, Screen & scr, View & view, int max_frames = -1)
                {
                        scr.DebugFontPrint("Doing rendering using CPU.\n");
                }
+               #endif // 0
+               
                scr.Present();
        }
 }
index 917f3e0..42bc5c0 100644 (file)
@@ -120,7 +120,7 @@ namespace IPDF
        inline Real Sqrt(const Real & r) {return Real(sqrt(r.ToDouble()));}
        inline Real RealFromStr(const char * str) {return Real(strtod(str, NULL));}
        inline Real Abs(const Real & a) {return (a > Real(0)) ? a : Real(0)-a;}
-       inline std::string Str(const Real & a) {return a.Str();}
+       
        
 #else
        #error "Type of Real unspecified."
@@ -139,7 +139,6 @@ namespace IPDF
        inline double Log10(double a) {return log(a)/log(10.0);}
        inline size_t Size(double a) {return sizeof(a);}
        inline size_t Size(float a) {return sizeof(a);}
-       
 
        inline int64_t Int64(double a)
        {
@@ -198,6 +197,91 @@ namespace IPDF
        inline Real RealFromStr(const std::string & str) {return RealFromStr(str.c_str());}
 
 
+       // things stolen from wikipedia and googling
+       inline const char * HumanScale(double f)
+       {
+               if (f < 1e-36)
+                       return "RATHER SMALL";
+               if (f < 1e-35)
+                       return "Plank Length";
+               if (f < 1e-25)
+                       return "Turtles all the way";
+               if (f < 1e-24)
+                       return "More turtles";
+               if (f < 1e-23)
+                       return "Turtles";
+               if (f < 1e-22)
+                       return "This small";
+               if (f < 1e-21)
+                       return "To find things";
+               if (f < 1e-20)
+                       return "It is pretty difficult";
+               if (f < 1e-19)
+                       return "Not much";
+               if (f < 1e-17)
+                       return "Weak Force";
+               if (f < 1e-16)
+                       return "Proton";
+               if (f < 1e-15)
+                       return "(Classical) Electron";
+               if (f < 1e-11)
+                       return "Inter atomic (still)";
+               if (f < 1e-10)
+                       return "Inter atomic";
+               if (f < 1e-9)
+                       return "Atom";
+               if (f < 1e-8)
+                       return "DNA";
+               if (f < 1e-7)
+                       return "Virus";
+               if (f < 1e-6)
+                       return "Light";
+               if (f < 1e-5)
+                       return "Bacteria";
+               if (f < 1e-4)
+                       return "4004 Transistor";
+               if (f < 1e-3)
+                       return "Ant";
+               if (f < 1e-2)
+                       return "Coin";
+               if (f < 1e-1)
+                       return "iPhone";
+               if (f < 1e0)
+                       return "Person";
+               if (f < 1e1)
+                       return "Building";
+               if (f < 1e2)
+                       return "Football Field";
+               if (f < 1e3)
+                       return "Mountain";
+               if (f < 1e4)
+                       return "Clouds";
+               if (f < 1e5)
+                       return "Countries";
+               if (f < 1e6)
+                       return "Earth";
+               if (f < 1e8)
+                       return "Between Earth and Moon";
+               if (f < 1e9)
+                       return "Solar System";
+               if (f < 1e13)
+                       return "Distance to nearest Star";
+               if (f < 1e21)
+                       return "Milky Way";
+               if (f < 1e26)
+                       return "Universe";
+               if (f < 1e27)
+                       return "A bigger Universe";
+               if (f < 1e28)
+                       return "Really big things";
+               if (f < 1e29)
+                       return "Almost as big as...";
+               if (f < 1e30)
+                       return "Wolfram's Magestic Ego";
+               return "QUITE BIG";
+               
+       }
+
        inline void DebugRealInfo() 
        {
                Debug("Compiled with REAL = %d => \"%s\" sizeof(Real) == %d bytes", REALTYPE, g_real_name[REALTYPE], sizeof(Real));
index af85e89..fcddfe7 100644 (file)
@@ -1,7 +1,29 @@
 # BECAUSE I CAN
 gpu
 lazy
-debugfont off
+#debugfont off
+
+
+loadsvg svg-tests/turtle.svg
+loop 50 pxzoom 430 170 1
+loadsvg svg-tests/turtle.svg
+loop 50 pxzoom 430 170 1
+loadsvg svg-tests/turtle.svg
+loop 50 pxzoom 430 170 1
+loadsvg svg-tests/turtle.svg
+loop 50 pxzoom 430 170 1
+loadsvg svg-tests/turtle.svg
+loop 50 pxzoom 430 170 1
+loadsvg svg-tests/turtle.svg
+loop 50 pxzoom 430 170 1
+loadsvg svg-tests/turtle.svg
+loop 50 pxzoom 430 170 1
+loadsvg svg-tests/turtle.svg
+loop 50 pxzoom 430 170 1
+loadsvg svg-tests/turtle.svg
+loop 50 pxzoom 430 170 1
+loadsvg svg-tests/turtle.svg
+loop 50 pxzoom 430 170 1
 loadsvg svg-tests/turtle.svg
 loop 50 pxzoom 430 170 1
 loadsvg svg-tests/turtle.svg
@@ -24,11 +46,53 @@ loadsvg svg-tests/turtle.svg
 loop 50 pxzoom 430 170 1
 
 # Hmm, we sort of need a for loop...
+loop 1000 pxzoom 430 170 -1
+
+loadsvg svg-tests/turtle.svg
+loop 50 pxzoom 430 170 -1
+loadsvg svg-tests/turtle.svg
+loop 50 pxzoom 430 170 -1
+loadsvg svg-tests/turtle.svg
+loop 50 pxzoom 430 170 -1
+loadsvg svg-tests/turtle.svg
+loop 50 pxzoom 430 170 -1
+loadsvg svg-tests/turtle.svg
+loop 50 pxzoom 430 170 -1
+loadsvg svg-tests/turtle.svg
+loop 50 pxzoom 430 170 -1
+loadsvg svg-tests/turtle.svg
+loop 50 pxzoom 430 170 -1
+loadsvg svg-tests/turtle.svg
+loop 50 pxzoom 430 170 -1
+loadsvg svg-tests/turtle.svg
+loop 50 pxzoom 430 170 -1
+loadsvg svg-tests/turtle.svg
+loop 50 pxzoom 430 170 -1
+loadsvg svg-tests/turtle.svg
+loop 50 pxzoom 430 170 -1
+loadsvg svg-tests/turtle.svg
+loop 50 pxzoom 430 170 -1
+loadsvg svg-tests/turtle.svg
+loop 50 pxzoom 430 170 -1
+loadsvg svg-tests/turtle.svg
+loop 50 pxzoom 430 170 -1
+loadsvg svg-tests/turtle.svg
+loop 50 pxzoom 430 170 -1
+loadsvg svg-tests/turtle.svg
+loop 50 pxzoom 430 170 -1
+loadsvg svg-tests/turtle.svg
+loop 50 pxzoom 430 170 -1
+loadsvg svg-tests/turtle.svg
+loop 50 pxzoom 430 170 -1
+loadsvg svg-tests/turtle.svg
+loop 50 pxzoom 430 170 -1
+loadsvg svg-tests/turtle.svg
+loop 50 pxzoom 430 170 -1
 
 clearperf
 label start
 printperf
-loop 500 pxzoom 430 170 -1
-loop 500 pxzoom 430 170 1
+loop 3000 pxzoom 430 170 1
+loop 3000 pxzoom 430 170 -1
 goto start
 wait

UCC git Repository :: git.ucc.asn.au