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.
|
| >Back to top
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.
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.
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.”
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.
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.
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
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
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.
- Create a file folder on your hard drive: c:\spheriphor\
- Copy the text from the table below and paste into the POV-Ray text editor
- Select File>Save As... and enter the filename
- Edit the main Spheriphor_Study01.pov file to point to the
include data file that you wish to use
- Click on the tab in POV-Ray for Spheriphor_Study01.pov and Run the
renderer
- 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
|
/*
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
|
|