SPHΘRIPHΦR - Study 01

Spherical Analytics Mapping Metrics On A Fulldome

This study examines a variety of methods of dividing the surface of a digital projection dome. This is one of a series of studies for the creation of a visual metaphor for representing complex data clusters in spherical space.

For more information see:
Spheriphor Main Page
Buckminster Fuller Challenge
Advanced to 2nd Stage
Q and A - Dome Projection System
Fulldome Visual Acuity
Spheriphor Study 01
Spheriphor Study 02
Spheriphor Study 03
Spheriphor Study 04
Spheriphor Study 05
Spheriphor Study 06
The term SPHERIPHOR and the special spelling SPHΘRIPHΦR using the Greek letters phi (Θ) and theta (Φ) are trademark words coined by the author/inventor Thomas J. Greenbaum as a compound of the words "SPHERIcal" and "metaPHOR." Included in the Spheriphor Studies are 3D images and animations rendered with POV-Ray. Examples of POV-Ray scene description language source code is provided "as is" for the reader to use and experiment with.

Creative Commons License This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 License.

Contents

Image Gallery

 
.
>Back to top

SphericAnalyticsTM

An opportunity exists to create a completely novel, fully-immersive perceptual environment to enhance humans’ ability to interface with large, multi-dimensional data sets in a full-dome immersive perceptual environment. The intent of SphericAnalyticsTM is to leverage methods and processes from several domains including business, art and information technology with the goal of significantly increasing the level of cognitive awareness of Buckminster Fuller's principle of Synergetic Advantage.

Thinking Inside the Box

Spreadsheets and charts are used frequently to visualize complex data in ways that would be impossible by just looking at rows and columns of numbers. Charting software has provided very powerful decision-making tools, but it is limited by rectangular, flat display formats; essentially stuck with thinking about data inside a box. The Cartesian coordinate system is used to organize data partly because this is what fits best on a rectangular piece of paper and a rectangular computer screen. There are many good reasons for using the Cartesian coordinate system to depict complex data, but we should recognize that other coordinate systems could yield more powerful tools.

Thinking Outside the Box and Inside the Sphere - Spheriphors

The planetarium dome is a visualization tool that is outside the box; in fact, it inside a sphere. It uses the spherical coordinate system to locate objects and describe features. Many natural systems are organized spherically. From the microcosmic electron shells surrounding an atomic nucleus to the macrocosmic background radiation, a large number of natural structures are visualized most effectively using spherical forms and spherical metaphors, or to coin a word, "Spheriphors." Recent breakthroughs in digital projection technology have enabled computer-driven, full-dome presentations. Artists, scientists, engineers, educators and researchers may now create immersive, visualization experiences on the inside of a planetarium dome. The availability of tools to create full-dome presentations drives the demand for innovative thinking outside the box and inside the sphere.

The intent of this study is to develop new and powerful tools to analyze complex data with new metaphors based on spherical geometries.

  • Spheriphors will effectively replace legacy bar charts.
  • Spheriphors will populate the hemispherical surface of a dome utilizing it to the utmost advantage.
  • Spheriphors will not address the dome in a similar manner to a planar, rectangular projection screen.
  • Spheriphors will not simply scatter images and charts around the inside of a dome.
  • Spheriphors will develop a new form of complex data visualizations totally integrated within a spherical projection space.
  • Spheriphors will exploit, for the first time, the unique characteristics of spherical space and develop a graphical display that organizes the data set according to a spherical coordinate system.
  • This is “Thinking Inside The Sphere.”

Thinking Outside the Sphere – SphericAnalyticsTM

The ultimate goal of this study is to create a new domain of spherical data visualization metaphors in order to fully utilize the expansive capacity of a digital dome projection system. The first implementation will develop a graphical system that displays information within the spherical space based on a system of metrics in which a large number of data clusters are compared simultaneously. Each data cluster is represented by a rich visual metaphor. Individual visual metaphors are projected on the dome in relationship to each other based on the spherical coordinate system.

Example - Design Project Portfolio

For example, consider the need to track and manage a large number of products and design projects. Products and projects could number in the hundreds. We would like to see in one sweeping glance the entire product portfolio and the current state of all design projects. This would enable a powerful management and planning capability. Here is how the SphericAnalyticsTM tool using the spherical coordinate system might visualize the data:

Phi Φ (polar angle from the z-axis, latitude)

Represents the product lifecycle. At zenith are projects in the exploratory phase and on the horizon are products at the end of their life. Products that are EOL and no longer supported are below the horizon and have disappeared from view.

Theta θ (azimuthal angle in the xy-plane from the x-axis, longitude)

Represents distinct vertical product markets. All vertical markets are arranged in a logical fashion around the perimeter of the dome. Markets are prioritized so that currently hot market segments are clustered directly in front of the viewing audience and less important markets segments are 180 degrees behind the audience. Additionally, product variance from projected market share is represented by a +/- position from the vertical market centerline.

Radius r

Represents a success indicator such as %ROI. For projects still in development this could be a projected figure. Depending on the wishes of our viewing audience we could arrange the most successful products closest to the center of the sphere so that they loom large. Less successful products are diminished in size due to perspective foreshortening because of their greater distance from the center of the sphere. This gives the viewer a clear focus on the company’s successes. Alternatively, we could arrange the products in reverse order so that the least successful products are closer to the center and appear relatively larger.

More To Come

This is just one way that we can organize data within the dome, but it represents a fundamentally different structure from that of a flat, rectilinear graphical system. There are many other spherical geometries that can potentially add value to our visualization objectives and this study shall explore several of them.

This innovative, completely new method of visualizing complex data sets is “Thinking Outside Of The Sphere,” promising two generations of thinking ahead.

>Back to top

POV-Ray Source Code

Persistence of Vision Raytracer (POV-Ray) is used to parametrically generate images of a spherical metaphor for multi-dimensional data visualization on a digital dome projection system. This spherical metaphor, or to coin a term “Spheriphor,” takes advantage of the opportunity to visualize high-density, multi-dimensional data using spherical coordinate systems. Virtual Globes may also use the Spheriphor to display non-GIS data.

This particular Spheriphor study shows how the dome may be used to visually compare the performance of a large portfolio of product designs in a multitude of vertical market segments.

>Back to top

Usage

The POV-Ray Spheriphor generator uses two files, the main Spheriphor_Study01.pov scene description file and an included file that contains the parametric data used to generate the spherical grid layout. The initialization (INI) file is provided for rendering a cyclic animation consisting of 60 frames.

  1. Create a file folder on your hard drive: c:\spheriphor\
  2. Copy the text from the table below and paste into the POV-Ray text editor
  3. Select File>Save As... and enter the filename
  4. Edit  the main Spheriphor_Study01.pov file to point to the include data file that you wish to use
  5. Click on the tab in POV-Ray for Spheriphor_Study01.pov and Run the renderer
  6. Alternatively, click on the tab in POV-Ray for Spheriphor_Study01.ini and Run the renderer in order to generate a cyclic animation

>Back to top

Spheriphor_Study01.pov

   /*
   Copyright (c) 2007 by Thomas J. Greenbaum. Some Rights Reserved.
   This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 License.
      http://creativecommons.org/licenses/by-nc-sa/3.0/
   Spheriphor Generator, version April 07, 2006
   For creation of a visual metaphor for representing complex data clusters in spherical space
   
   Command line options to redirect file output
      Test resolution setting:   
         +FS24, +Lc:\spheriphor\, +OSpheriphor_Study01-01 Width=320, Height=240, +A
      High resolution setting:
         +FS24, +Lc:\spheriphor\, +OSpheriphor_Study01-01 Width=3072, Height=2304, +A     
      NOTES: +FS24 = System File (Windows BMP) 24bit color depth
   */
    
   #include "stdinc.inc"
   #include "shapes.inc"                            // Include Macro for Wedge shape
   #include "Spheriphor_Study01_01.inc"             // Include data for Grid parameters
   
   // Increase max_trace_level to calculate multiple layers of transparent objects
   global_settings
   {
     //max_trace_level 20
     //ambient_light rgb <0.7,0.7,0.7>
   }
   
   #declare Grid_finish = finish {
      ambient   0.300
      phong 0.9 phong_size 60 metallic
      diffuse   0.700
      specular  0.700
      roughness 0.5
   }
   
   // Define the Spherical Grid
   #declare Grid_Color1     = color Blue ; 
   #declare Grid_Color2     = color Green ; 
   #declare Torus_r1        = 100 ;                 // Spherical grid torus radius - primary
   #declare Torus_r2        = 0.5 ;                 // Spherical grid torus radius - secondary
   #declare Qty_Lng_Torus   = 9 ;                   // Number of longitudinal divisions
   #declare Qty_Lat_Torus   = 10 ;                  // Number of latitudinal divisions
   #declare Phi_upper       = 10 ;                  // Upper bounding angle for latitudinal divisions (zenith=0,equator=90)
   #declare Phi_lower       = 89 ;                  // Lower bounding angle for latitudinal divisions (MUST BE <90)
   #declare Theta_lower     = 340 ;                 // Lower bounding angle for longitutidinal divisions (12noon=0)
   #declare Theta_upper     = 520 ;                 // Upper bounding angle for longitutidinal divisions (max angle=360)
   
   #declare Angle_Lng_Torus = (Theta_upper-Theta_lower)/Qty_Lng_Torus ; // Angle between longitudinal divisions 
   #declare Angle_Lat_Torus = (Phi_lower-Phi_upper)/Qty_Lat_Torus ;     // Angle between latitudinal divisions
   
   // Series of latitudinal divisions
   #declare Phi = Phi_upper ;                       // Initialize Phi to upper bounding angle
   #declare i = 0 ;                                 // Initialize i
   #declare Grid_Lat_0 =                            // Create latitudinal grid from union of individual torus (whole prior to cutting)
      union {                                       // Create a latitudinal torus for each division
         #while (i <= Qty_Lat_Torus )
            #declare Lat_r1 = sind(Phi)*Torus_r1 ;  // Torus radius according to Phi 
            #declare Lat_Ht = cosd(Phi)*Torus_r1 ;  // Torus height according to Phi
            torus { Lat_r1, Torus_r2
               translate <0,Lat_Ht,0>
            }  
            #declare Phi = Phi + Angle_Lat_Torus ;  // Increment angle for next division
            #declare i = i + 1 ;
         #end
      }
   #declare Diff_wedge =                            // Creat wedge to subtract from Lat series
      Wedge ( 360-(Theta_upper-Theta_lower) )       // Wedge macro from "shapes.inc" creates infinite wedge shape
   #declare Grid_Lat_1 =                            // Lat grid cut at lower and upper bounding angles
      difference {                                  // Results in pie slice of lat torus series
         object { Grid_Lat_0 }                      // Initial series of lat torus that wrap 360 deg
         Wedge ( 360-(Theta_upper-Theta_lower) )    // Wedge macro from "shapes.inc" creates infinite wedge shape
      }
   #declare Grid_Lat =                              // Final Lat grid rotated to correct angle
      object { Grid_Lat_1
         rotate < 0,Theta_upper,0 >                 // Rotated to adjust for wedge generated fixed to zy plane
      }
   
   // Series of longitudinal divisions
   // Create the difference object that results in quarter torus
   #declare Diff_dim1 = Torus_r1*1.5 ;
   #declare Diff_dim2 = Torus_r2*1.5 ;
   #declare Lng_Torus_Diff =
      union {
         box { <0,-Diff_dim2,Diff_dim1>, }
         box { <-Diff_dim1,-Diff_dim2,0>, }
      }
   // Create the series   
   #declare Theta = Theta_lower ;                   // Initialize Theta starting at lower boundary angle
   #declare i = 0 ;                                 // Initialize i
   #declare Grid_Lng_0 = 
      union {                                       // Create a latitudinal torus for each division
         #while (i <= Qty_Lng_Torus )
            #declare Lng_Torus =
               torus { Torus_r1, Torus_r2 }  
            #declare Lng_Torus_Qtr =                // Create quarter torus by subtracting difference object
               difference {
                  object { Lng_Torus }
                  object { Lng_Torus_Diff }
                  }
            object { Lng_Torus_Qtr
               rotate <0,0,-90>                     // First rotate 90 degrees about Z axis lifting it up from XZ plane
               rotate <0,Theta,0>                   // Next rotate Theta degrees about Y axis
            }
            #declare Theta = Theta + Angle_Lng_Torus ;   // Increment angle for next division
            #declare i = i + 1 ;
         #end
      }
   
   // Create difference object for cutting longitudinal grid torus lines at lower and upper bounding angles
   #declare Diff_dim1 = Torus_r1*1.5 ;              // Dimension of difference cylinder bigger than primary torus radius by factor of 1.5
   #declare Diff_dim2 = Diff_dim1/tand(Phi_lower) ;
   #declare Diff_dim3 = Diff_dim1/tand(Phi_upper) ;
   #declare Diff_cyl = cylinder { <0,-(Diff_dim2*1.5),0>,<0,0,0>,Diff_dim1 }
   #declare Grid_diff_lower =
      difference {                                  // Subtract bottom half of grid below the lower Phi bounding angle
         object { Diff_cyl                          // Cylinder is big enough to contain the cone shaped cavity which is subtracted from it
            translate <0,Diff_dim2,0 >              // Cylinder is moved upward to position so that cone can be subtracted from it
         }
         cone {                                     // This cone is subtracted from the cylinder creating a cone shaped cavity in the
            <0,0,0>,0                               // top of the cylinder which is based on the Phi_lower angle
            <0,Diff_dim2,0>,Diff_dim1
         }
      }
   #declare Grid_diff_upper =                       // Upper diff object is a cone with one apex at the center of the sphere
      cone {                                        // Cone extends upward at angle determined by Diff_dim3 which was calculated
         <0,0,0>,0                                  // based on the Phi_upper angle
         <0,Diff_dim3,0>,Diff_dim1         
      }
   #declare Grid_Lng =                              // Final longitudinal grid cut at lower and upper bounding angles
      difference {
         object { Grid_Lng_0 }
         object { Grid_diff_lower }
         object { Grid_diff_upper }
      }
      
   // Create final grid from union of Lat and Lng grid series
   #declare Grid =
   union {
      object { Grid_Lat
         pigment { Grid_Color1 }
         finish { Grid_finish }
         no_shadow 
      }
      object { Grid_Lng 
         pigment { Grid_Color2 }
         finish { Grid_finish }
         no_shadow 
      }
   }
   
   #declare BizViz = 
   union {
      object { Grid }
      //object { Spheriphor_All }
   }
   
   object { BizViz }
   
   /*
   object { BizViz
      rotate <0,clock*360,0>                        // Rotate around Y axis for animation
      rotate <120,0,0>
      translate <0,0,-35>
   } */
   
   // B A C K G R O U N D 
   background { color Black }
   
   // L I G H T S
   #declare Light_dist = Torus_r1*4 ;
   
   light_source {
      
      color White }
   /*
   light_source { 
      color SummerSky //Gray40 White
      spotlight
      radius 65 falloff 70
      fade_distance Light_dist*0.7
      point_at <0,0,0>}
   
   light_source { <-Light_dist,Light_dist,-Light_dist>
      color SpicyPink // Gray40 White
      spotlight
      radius 65 falloff 70
      fade_distance Light_dist*0.7
      point_at <0,0,0>}
   
   light_source { <-Light_dist,-Light_dist,Light_dist>
      color SpringGreen //Gray40 White
      spotlight
      radius 65 falloff 70
      fade_distance Light_dist*0.7
      point_at <0,0,0>}
   */
   light_source { 
      color GreenYellow //Gray40 White
      //spotlight
      //radius 65 falloff 70
      //fade_distance Light_dist*0.7
      //point_at <0,0,0>
      }
   
   
   // C A M E R A S
   #declare Cam01 =    
   camera {
      fisheye
      location <0,0,0>
      look_at  <0,10,0>
      angle 180   
   }
   
   #declare Cam02 =   // Plan view looking from +Y to -Y
   camera {
      //orthographic
      location <0,Torus_r1*2,0>
      look_at  <0,0,0>
      right 1.33*x
      angle 70   
   }
   
   #declare Cam03 =    // Elevation view looking from -Z to +Z
   camera {
      //orthographic
      location <0,Torus_r1/2,-Torus_r1*1.5>
      look_at  <0,Torus_r1/2,0>
      right 1.33*x
      angle 70   
   }
   
   camera { Cam03 }
   /*
   Copyright (c) 2007 by Thomas J. Greenbaum. Some Rights Reserved.
   This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 License.
      http://creativecommons.org/licenses/by-nc-sa/3.0/
   Spheriphor Generator, version April 10, 2006
   For creation of a visual metaphor for representing complex data clusters in spherical space
   Include file defines parameters used in POV file: Spheriphor_Study01.pov
   All files are located in folder: c:\spheriphor\
   */
   
   /* Definitions and example data for the Spherical Grid
   #declare Grid_Color1     = color Blue ; 
   #declare Grid_Color2     = color Green ; 
   #declare Torus_r1        = 100 ;                 // Spherical grid torus radius - primary
   #declare Torus_r2        = 0.5 ;                 // Spherical grid torus radius - secondary
   #declare Qty_Lng_Torus   = 9 ;                   // Number of longitudinal divisions
   #declare Qty_Lat_Torus   = 10 ;                  // Number of latitudinal divisions
   #declare Phi_upper       = 10 ;                  // Upper bounding angle for latitudinal divisions (zenith=0,equator=90)
   #declare Phi_lower       = 89 ;                  // Lower bounding angle for latitudinal divisions (MUST BE <90)
   #declare Theta_lower     = 340 ;                 // Lower bounding angle for longitutidinal divisions (12noon=0)
   #declare Theta_upper     = 520 ;                 // Upper bounding angle for longitutidinal divisions (max angle=360)
   */   
   // P A R A M E T E R S
   #declare Row_cnt = 50 ;
   
   // Col 1        Col 2        Col 3     Col 4     Col 5          Col 6          Col 7      Col 8      Col 9        Col 10
   // Grid_Color1  Grid_Color2  Torus_r1  Torus_r2  Qty_Lng_Torus  Qty_Lat_Torus  Phi_upper  Phi_lower  Theta_lower  Theta_upper
   #declare s1_val = array[7][10]                   // Multi-dimensional array with 7 rows and 10 columns
   {  
      {Blue,       Green,       100,      0.5,      12,            3,             10,        15,        0,           360}, //Row 1
      {Red,        SkyBlue,     100,      0.5,      6,             10,            25,        89,        0,           55},  //Row 2
      {Magenta,    Yellow,      100,      0.5,      6,             10,            25,        89,        60,          115}, //Row 3
      {Red,        SkyBlue,     100,      0.5,      6,             10,            25,        89,        120,         175}, //Row 4
      {Magenta,    Yellow,      100,      0.5,      6,             10,            25,        89,        180,         235}, //Row 5
      {Red,        SkyBlue,     100,      0.5,      6,             10,            25,        89,        240,         295}, //Row 6
      {Magenta,    Yellow,      100,      0.5,      6,             10,            25,        89,        300,         355}  //Row 7
   } ;
      
   ; Spheriphor Generator INI file
   ; Copyright © 2007 by Thomas J Greenbaum. Some Rights Reserved.
   This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 License.
      http://creativecommons.org/licenses/by-nc-sa/3.0/
   ; Spheriphor Generator, version April 03, 2006
   ; Persistence Of Vision raytracer version 3.6
   
   Input_File_Name = Spheriphor_Study01.pov
   Library_Path    = c:\spheriphor\
   
   ; File Type S for System-specific Windows BMP 24bit color depth
   Output_File_Type=S24
   Output_File_Name=Spheriphor_Study01-.bmp
   
   Antialias=on
   Width=320
   Height=240
   
   ;Width=3072
   ;Height=2304
   
   ; Compute media and radiosity
   Quality=10
   
   ; Turn Jitter OFF for animation
   Jitter=off
   
   ; Don't want to pause between frames
   Pause_when_Done=off
   
   Initial_Frame=1
   Final_Frame=60
   
   ;Subset_Start_Frame= 
   ;Subset_End_Frame=
   
   ; Clock
   Initial_Clock=0
   Final_Clock=1
   
   Cyclic_Animation=on       
      

Home • Up • About • Attitude • Gallery • Karmatetra • Links/Search • Network • Non-Goal • Non-Synergy • Philosophy • Snowflakes • STUPAfy

Copyright © 2012 by Tom Greenbaum. Creative Commons License Some Rights Reserved
email: tom@karmatetra.com

Albuquerque, New Mexico