Index: GTP/trunk/Lib/Vis/Preprocessing/FrontEnd/preprocessorFrontEnd.cpp
===================================================================
--- GTP/trunk/Lib/Vis/Preprocessing/FrontEnd/preprocessorFrontEnd.cpp	(revision 1558)
+++ GTP/trunk/Lib/Vis/Preprocessing/FrontEnd/preprocessorFrontEnd.cpp	(revision 1563)
@@ -31,16 +31,18 @@
 IMPLEMENT_APP(MyApp)
 
+
 bool MyApp::OnInit()
 {
     // Create the main window
-    MyFrame *frame = new MyFrame( wxT("Notebook sample") );
+    MyFrame *frame = new MyFrame(wxT("Preprocessor Frontend"));
 
     // Problem with generic wxNotebook implementation whereby it doesn't size
     // properly unless you set the size again
-#if defined(__WXMOTIF__)
+//#if defined(__WXMOTIF__)
+//	frame->SetSize(wxDefaultCoord, wxDefaultCoord, 1024, 768);
     int width, height;
-    frame->GetSize(& width, & height);
+    frame->GetSize(&width, &height);
     frame->SetSize(wxDefaultCoord, wxDefaultCoord, width, height);
-#endif
+//#endif
 
     frame->Show();
@@ -49,34 +51,35 @@
 }
 
-wxPanel *CreateUserCreatedPage(wxBookCtrlBase *parent)
+
+wxPanel *MyFrame::CreateUserCreatedPage(wxBookCtrlBase *parent)
 {
     wxPanel *panel = new wxPanel(parent);
 
-    (void) new wxButton( panel, wxID_ANY, wxT("Button"),
-        wxPoint(10, 10), wxDefaultSize );
+    (void) new wxButton(panel, wxID_ANY, wxT("Button"),
+        wxPoint(10, 10), wxDefaultSize);
 
     return panel;
 }
 
-wxPanel *CreateRadioButtonsPage(wxBookCtrlBase *parent)
+
+wxPanel *MyFrame::CreatePreprocessorPage(wxBookCtrlBase *parent)
 {
     wxPanel *panel = new wxPanel(parent);
 
-    wxString animals[] = { wxT("Fox"), wxT("Hare"), wxT("Rabbit"),
-        wxT("Sabre-toothed tiger"), wxT("T Rex") };
-
-    wxRadioBox *radiobox1 = new wxRadioBox(panel, wxID_ANY, wxT("Choose one"),
-        wxDefaultPosition, wxDefaultSize, 5, animals, 2, wxRA_SPECIFY_ROWS);
-
-    wxString computers[] = { wxT("Amiga"), wxT("Commodore 64"), wxT("PET"),
-        wxT("Another") };
-
-    wxRadioBox *radiobox2 = new wxRadioBox(panel, wxID_ANY,
-        wxT("Choose your favourite"), wxDefaultPosition, wxDefaultSize,
-        4, computers, 0, wxRA_SPECIFY_COLS);
+	wxString preprocessorType[] = {wxT("Rss"), wxT("Gvs"), wxT("None")};
+
+    wxRadioBox *radiobox1 = new wxRadioBox(panel, wxID_ANY, wxT("Choose preprocessor type"),
+        wxDefaultPosition, wxDefaultSize, 3, preprocessorType, 1, wxRA_SPECIFY_ROWS);
+
+	mDetectEmptyViewSpaceText = new wxTextCtrl(panel, wxID_ANY, "detect emtpy view space",
+		wxDefaultPosition, wxDefaultSize);
+
+	//mDetectEmptyViewSpaceCheckBox = new wxCheckBox(panel, wxID_ANY);
 
     wxBoxSizer *sizerPanel = new wxBoxSizer(wxVERTICAL);
-    sizerPanel->Add(radiobox1, 2, wxEXPAND);
-    sizerPanel->Add(radiobox2, 1, wxEXPAND);
+    sizerPanel->Add(radiobox1, 1, wxEXPAND);
+	sizerPanel->Add(mDetectEmptyViewSpaceText, 1);
+	sizerPanel->Add(mDetectEmptyViewSpaceCheckBox, 1);
+
     panel->SetSizer(sizerPanel);
 
@@ -84,5 +87,23 @@
 }
 
-wxPanel *CreateVetoPage(wxBookCtrlBase *parent)
+
+wxPanel *MyFrame::CreateViewCellsPage(wxBookCtrlBase *parent)
+{
+    wxPanel *panel = new wxPanel(parent);
+
+	wxString viewSpaceHierarchy[] = {wxT("vspBsp"), wxT("vspOsp"), wxT("bsp")};
+
+    wxRadioBox *radiobox1 = new wxRadioBox(panel, wxID_ANY, wxT("Choose view space hierarchy type"),
+        wxDefaultPosition, wxDefaultSize, 3, viewSpaceHierarchy, 1, wxRA_SPECIFY_ROWS);
+
+    wxBoxSizer *sizerPanel = new wxBoxSizer(wxVERTICAL);
+    sizerPanel->Add(radiobox1, 1, wxEXPAND);
+    panel->SetSizer(sizerPanel);
+
+    return panel;
+}
+
+
+/*wxPanel *CreateVetoPage(wxBookCtrlBase *parent)
 {
     wxPanel *panel = new wxPanel(parent);
@@ -92,21 +113,8 @@
 
     return panel;
-}
-
-wxPanel *CreateBigButtonPage(wxBookCtrlBase *parent)
-{
-    wxPanel *panel = new wxPanel(parent);
-
-    wxButton *buttonBig = new wxButton(panel, wxID_ANY, wxT("Maximized button"));
-
-    wxBoxSizer *sizerPanel = new wxBoxSizer(wxVERTICAL);
-    sizerPanel->Add(buttonBig, 1, wxEXPAND);
-    panel->SetSizer(sizerPanel);
-
-    return panel;
-}
-
-
-wxPanel *CreateInsertPage(wxBookCtrlBase *parent)
+}*/
+
+
+/*wxPanel *CreateInsertPage(wxBookCtrlBase *parent)
 {
     wxPanel *panel = new wxPanel(parent);
@@ -117,5 +125,6 @@
 
     return panel;
-}
+}*/
+
 
 int GetIconIndex(wxBookCtrlBase* bookCtrl)
@@ -133,53 +142,35 @@
 }
 
-void CreateInitialPages(wxBookCtrlBase *parent)
+
+void MyFrame::CreateInitialPages(wxBookCtrlBase *parent)
 {
     // Create and add some panels to the notebook
-
-    wxPanel *panel = CreateRadioButtonsPage(parent);
-    parent->AddPage( panel, RADIOBUTTONS_PAGE_NAME, false, GetIconIndex(parent) );
-
-    panel = CreateVetoPage(parent);
-    parent->AddPage( panel, VETO_PAGE_NAME, false, GetIconIndex(parent) );
-
-    panel = CreateBigButtonPage(parent);
-    parent->AddPage( panel, MAXIMIZED_BUTTON_PAGE_NAME, false, GetIconIndex(parent) );
-
-    panel = CreateInsertPage(parent);
-    parent->InsertPage( 0, panel, I_WAS_INSERTED_PAGE_NAME, false, GetIconIndex(parent) );
+    wxPanel *panel = CreatePreprocessorPage(parent);
+    parent->AddPage(panel, PREPROCESSOR_PAGE_NAME, false, GetIconIndex(parent));
+
+	panel = CreateViewCellsPage(parent);
+    parent->AddPage(panel, VIEWCELLS_PAGE_NAME, false, GetIconIndex(parent));
+
+    //panel = CreateVetoPage(parent);
+    //parent->AddPage( panel, VETO_PAGE_NAME, false, GetIconIndex(parent) );
+
+    //panel = CreateInsertPage(parent);
+    //parent->InsertPage( 0, panel, I_WAS_INSERTED_PAGE_NAME, false, GetIconIndex(parent) );
 
     parent->SetSelection(1);
 }
 
-wxPanel *CreatePage(wxBookCtrlBase *parent, const wxString&pageName)
-{
-    if
-    (
-        pageName.Contains(INSERTED_PAGE_NAME)
-        || pageName.Contains(ADDED_PAGE_NAME)
-    )
-    {
-        return CreateUserCreatedPage(parent);
-    }
-
-    if (pageName == I_WAS_INSERTED_PAGE_NAME)
-    {
-        return CreateInsertPage(parent);
-    }
-
-    if (pageName == VETO_PAGE_NAME)
-    {
-        return CreateVetoPage(parent);
-    }
-
-    if (pageName == RADIOBUTTONS_PAGE_NAME)
-    {
-        return CreateRadioButtonsPage(parent);
-    }
-
-
-    if (pageName == MAXIMIZED_BUTTON_PAGE_NAME)
-    {
-        return CreateBigButtonPage(parent);
+
+wxPanel *MyFrame::CreatePage(wxBookCtrlBase *parent, const wxString&pageName)
+{
+   
+    if (pageName == VIEWCELLS_PAGE_NAME)
+    {
+        return CreateViewCellsPage(parent);
+    }
+
+	if (pageName == PREPROCESSOR_PAGE_NAME)
+    {
+        return CreatePreprocessorPage(parent);
     }
 
@@ -189,21 +180,23 @@
 }
 
-MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size,
+MyFrame::MyFrame(const wxString& title, 
+				 const wxPoint& pos, 
+				 const wxSize& size,
                  long style)
     : wxFrame((wxWindow *) NULL, wxID_ANY, title, pos, size, style)
 {
 #if wxUSE_NOTEBOOK
-    m_type = ID_BOOK_NOTEBOOK;
+    mType = ID_BOOK_NOTEBOOK;
 #elif wxUSE_CHOICEBOOK
-    m_type = ID_BOOK_CHOICEBOOK;
+    mType = ID_BOOK_CHOICEBOOK;
 #elif wxUSE_LISTBOOK
-    m_type = ID_BOOK_LISTBOOK;
+    mType = ID_BOOK_LISTBOOK;
 #elif
     #error "Don't use Notebook sample without any book enabled in wxWidgets build!"
 #endif
 
-    m_orient = ID_ORIENT_DEFAULT;
-    m_chkShowImages = true;
-    m_multi = false;
+    mOrient = ID_ORIENT_DEFAULT;
+    mChkShowImages = true;
+    mMulti = false;
 
     SetIcon(wxICON(sample));
@@ -212,13 +205,14 @@
     wxMenu *menuType = new wxMenu;
 #if wxUSE_NOTEBOOK
-    menuType->AppendRadioItem(ID_BOOK_NOTEBOOK,   wxT("&Notebook\tCtrl-1"));
+    menuType->AppendRadioItem(ID_BOOK_NOTEBOOK, wxT("&Notebook\tCtrl-1"));
 #endif
 #if wxUSE_LISTBOOK
-    menuType->AppendRadioItem(ID_BOOK_LISTBOOK,   wxT("&Listbook\tCtrl-2"));
+    menuType->AppendRadioItem(ID_BOOK_LISTBOOK, wxT("&Listbook\tCtrl-2"));
 #endif
 #if wxUSE_CHOICEBOOK
     menuType->AppendRadioItem(ID_BOOK_CHOICEBOOK, wxT("&Choicebook\tCtrl-3"));
 #endif
-    menuType->Check(m_type, true);
+
+    menuType->Check(mType, true);
 
     wxMenu *menuOrient = new wxMenu;
@@ -243,6 +237,6 @@
     menuFile->AppendSeparator();
     menuFile->Append(wxID_EXIT, wxT("E&xit"), wxT("Quits the application"));
-    menuFile->Check(ID_SHOW_IMAGES, m_chkShowImages);
-    menuFile->Check(ID_MULTI, m_multi);
+    menuFile->Check(ID_SHOW_IMAGES, mChkShowImages);
+    menuFile->Check(ID_MULTI, mMulti);
 
     wxMenuBar *menuBar = new wxMenuBar;
@@ -253,13 +247,13 @@
     // books creation
 
-    m_panel      = (wxPanel *)      NULL;
+    mPanel      = (wxPanel *) NULL;
 #if wxUSE_NOTEBOOK
-    m_notebook   = (wxNotebook *)   NULL;
+    mNotebook   = (wxNotebook *) NULL;
 #endif
 #if wxUSE_CHOICEBOOK
-    m_choicebook = (wxChoicebook *) NULL;
+    mChoicebook = (wxChoicebook *) NULL;
 #endif
 #if wxUSE_LISTBOOK
-    m_listbook   = (wxListbook *)   NULL;
+    mListbook   = (wxListbook *) NULL;
 #endif
 
@@ -267,64 +261,66 @@
     wxSize imageSize(32, 32);
 
-    m_imageList
+    mImageList
         = new wxImageList( imageSize.GetWidth(), imageSize.GetHeight() );
 
-    m_imageList->Add
+    mImageList->Add
         (
             wxArtProvider::GetIcon(wxART_INFORMATION, wxART_OTHER, imageSize)
         );
 
-    m_imageList->Add
+    mImageList->Add
         (
             wxArtProvider::GetIcon(wxART_QUESTION, wxART_OTHER, imageSize)
         );
 
-    m_imageList->Add
+    mImageList->Add
         (
             wxArtProvider::GetIcon(wxART_WARNING, wxART_OTHER, imageSize)
         );
 
-    m_imageList->Add
+    mImageList->Add
         (
             wxArtProvider::GetIcon(wxART_ERROR, wxART_OTHER, imageSize)
         );
 
-    m_panel = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxDefaultSize,
+    mPanel = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxDefaultSize,
         wxTAB_TRAVERSAL | wxCLIP_CHILDREN | wxNO_BORDER | wxNO_FULL_REPAINT_ON_RESIZE);
 
 #if USE_LOG
-    m_text = new wxTextCtrl(m_panel, wxID_ANY, wxEmptyString,
+    mText = new wxTextCtrl(mPanel, wxID_ANY, wxEmptyString,
         wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE | wxTE_READONLY);
 
-    m_logTargetOld = wxLog::SetActiveTarget( new wxLogTextCtrl(m_text) );
+    mLogTargetOld = wxLog::SetActiveTarget( new wxLogTextCtrl(mText) );
 #endif // USE_LOG
 
     // Set sizers
-    m_sizerFrame = new wxBoxSizer(wxVERTICAL);
+    mSizerFrame = new wxBoxSizer(wxVERTICAL);
 
 #if USE_LOG
-    m_sizerFrame->Add(m_text, 1, wxEXPAND);
+    mSizerFrame->Add(mText, 1, wxEXPAND);
 #endif // USE_LOG
 
+	// create preprocessor front end
+	//mPreprocessorFrontEnd = new PreprocessorFrontEnd();
     RecreateBooks();
-
-    m_panel->SetSizer(m_sizerFrame);
-
-    m_sizerFrame->Fit(this);
-    m_sizerFrame->SetSizeHints(this);
+    mPanel->SetSizer(mSizerFrame);
+
+    mSizerFrame->Fit(this);
+    mSizerFrame->SetSizeHints(this);
 
     Centre(wxBOTH);
 }
 
+
 MyFrame::~MyFrame()
 {
 #if USE_LOG
-    delete wxLog::SetActiveTarget(m_logTargetOld);
+    delete wxLog::SetActiveTarget(mLogTargetOld);
 #endif // USE_LOG
 
-    if (m_imageList)
-    {
-        delete m_imageList;
-        m_imageList = (wxImageList *) NULL;
+    if (mImageList)
+    {
+        delete mImageList;
+        mImageList = (wxImageList *) NULL;
     }
 }
@@ -347,9 +343,9 @@
 #endif
 
-#define RECREATE( wxBookType , idBook, oldBook , newBook )                         \
+#define RECREATE(wxBookType , idBook, oldBook, newBook)                            \
 {                                                                                  \
     int flags;                                                                     \
                                                                                    \
-    switch ( m_orient )                                                            \
+    switch (mOrient)                                                               \
     {                                                                              \
         case ID_ORIENT_TOP:                                                        \
@@ -372,17 +368,17 @@
             flags = SelectFlag(idBook, wxNB_DEFAULT, wxLB_DEFAULT, wxCHB_DEFAULT); \
     }                                                                              \
-                                                                                   \
-    if ( m_multi && ( idBook == ID_NOTEBOOK ) )                                    \
+																				   \
+    if (mMulti && (idBook == ID_NOTEBOOK))                                         \
         flags |= wxNB_MULTILINE;                                                   \
                                                                                    \
     wxBookType *oldBook = newBook;                                                 \
                                                                                    \
-    newBook = new wxBookType(m_panel, idBook,                                      \
+    newBook = new wxBookType(mPanel, idBook,                                       \
                              wxDefaultPosition, wxDefaultSize,                     \
                              flags);                                               \
                                                                                    \
-    if ( m_chkShowImages )                                                         \
+    if (mChkShowImages)                                                            \
     {                                                                              \
-        newBook->SetImageList(m_imageList);                                        \
+        newBook->SetImageList(mImageList);                                         \
     }                                                                              \
                                                                                    \
@@ -400,5 +396,5 @@
         }                                                                          \
                                                                                    \
-        m_sizerFrame->Detach(oldBook);                                             \
+        mSizerFrame->Detach(oldBook);                                              \
                                                                                    \
         delete oldBook;                                                            \
@@ -414,20 +410,20 @@
         CreateInitialPages(newBook);                                               \
     }                                                                              \
-                                                                                   \
-    m_sizerFrame->Insert(0, newBook, 5, wxEXPAND | wxALL, MARGIN);                 \
-                                                                                   \
-    m_sizerFrame->Hide(newBook);                                                   \
-}
+																				   \
+	mSizerFrame->Insert(0, newBook, 5, wxEXPAND | wxALL, MARGIN);   			   \
+	mSizerFrame->Hide(newBook);                                                    \
+}
+
 
 void MyFrame::RecreateBooks()
 {
 #if wxUSE_NOTEBOOK
-    RECREATE( wxNotebook   , ID_NOTEBOOK   , notebook   , m_notebook );
+    RECREATE(wxNotebook, ID_NOTEBOOK, notebook, mNotebook);
 #endif
 #if wxUSE_LISTBOOK
-    RECREATE( wxListbook   , ID_LISTBOOK   , listbook   , m_listbook );
+//    RECREATE(wxListbook, ID_LISTBOOK, listbook, mListbook);
 #endif
 #if wxUSE_CHOICEBOOK
-    RECREATE( wxChoicebook , ID_CHOICEBOOK , choicebook , m_choicebook );
+    RECREATE(wxChoicebook, ID_CHOICEBOOK, choicebook, mChoicebook);
 #endif
 
@@ -435,16 +431,17 @@
 }
 
+
 wxBookCtrlBase *MyFrame::GetCurrentBook()
 {
-    switch (m_type)
+    switch (mType)
     {
 #if wxUSE_NOTEBOOK
-        case ID_BOOK_NOTEBOOK:   return m_notebook;
+        case ID_BOOK_NOTEBOOK:   return mNotebook;
 #endif
 #if wxUSE_LISTBOOK
-        case ID_BOOK_LISTBOOK:   return m_listbook;
+        case ID_BOOK_LISTBOOK:   return mListbook;
 #endif
 #if wxUSE_CHOICEBOOK
-        case ID_BOOK_CHOICEBOOK: return m_choicebook;
+        case ID_BOOK_CHOICEBOOK: return mChoicebook;
 #endif
     }
@@ -454,18 +451,34 @@
 void MyFrame::ShowCurrentBook()
 {
-    switch(m_type)
+    switch(mType)
     {
 #if wxUSE_NOTEBOOK
-        case ID_BOOK_NOTEBOOK:   if(m_notebook)   m_sizerFrame->Show(m_notebook);   break;
+        case ID_BOOK_NOTEBOOK: 
+			if (mNotebook)   
+			{
+				mSizerFrame->Show(mNotebook);   
+			}
+			
+			break;
 #endif
 #if wxUSE_LISTBOOK
-        case ID_BOOK_LISTBOOK:   if(m_listbook)   m_sizerFrame->Show(m_listbook);   break;
+        case ID_BOOK_LISTBOOK:   
+			if (mListbook)   
+			{
+				mSizerFrame->Show(mListbook);   
+				break;
+			}
 #endif
 #if wxUSE_CHOICEBOOK
-        case ID_BOOK_CHOICEBOOK: if(m_choicebook) m_sizerFrame->Show(m_choicebook); break;
-#endif
-    }
-
-    m_sizerFrame->Layout();
+        case ID_BOOK_CHOICEBOOK: 
+			if (mChoicebook) 
+			{
+				mSizerFrame->Show(mChoicebook); 
+				break;
+			}
+#endif
+    }
+
+    mSizerFrame->Layout();
 }
 
@@ -507,8 +520,8 @@
     wxBookCtrlBase *currBook = GetCurrentBook();
 
-    m_type = event.GetId();
+    mType = event.GetId();
 
     if (currBook)
-        m_sizerFrame->Hide(currBook);
+        mSizerFrame->Hide(currBook);
 
     ShowCurrentBook();
@@ -517,21 +530,21 @@
 void MyFrame::OnOrient(wxCommandEvent& event)
 {
-    m_orient = event.GetId();
+    mOrient = event.GetId();
     RecreateBooks();
-    m_sizerFrame->Layout();
+    mSizerFrame->Layout();
 }
 
 void MyFrame::OnShowImages(wxCommandEvent& event)
 {
-    m_chkShowImages = event.IsChecked();
+    mChkShowImages = event.IsChecked();
     RecreateBooks();
-    m_sizerFrame->Layout();
+    mSizerFrame->Layout();
 }
 
 void MyFrame::OnMulti(wxCommandEvent& event)
 {
-    m_multi = event.IsChecked();
+    mMulti = event.IsChecked();
     RecreateBooks();
-    m_sizerFrame->Layout();
+    mSizerFrame->Layout();
     wxLogMessage(_T("Multiline setting works only in wxNotebook."));
 }
@@ -548,7 +561,8 @@
     wxBookCtrlBase *currBook = GetCurrentBook();
 
-    if ( currBook )
-    {
-        wxPanel *panel = new wxPanel( currBook, wxID_ANY );
+    if (currBook)
+    {
+        wxPanel *panel = new wxPanel(currBook, wxID_ANY);
+
         (void) new wxButton( panel, wxID_ANY, wxT("First button"),
             wxPoint(10, 10), wxDefaultSize );
@@ -556,8 +570,10 @@
             wxPoint(50, 100), wxDefaultSize );
 
-        currBook->AddPage(panel, wxString::Format(ADDED_PAGE_NAME wxT("%u"),
-            ++s_pageAdded), true, GetIconIndex(currBook) );
-    }
-}
+        currBook->AddPage(
+			panel, wxString::Format(ADDED_PAGE_NAME wxT("%u"),
+            ++ s_pageAdded), true, GetIconIndex(currBook) );
+    }
+}
+
 
 void MyFrame::OnInsertPage(wxCommandEvent& WXUNUSED(event))
@@ -567,10 +583,10 @@
     wxBookCtrlBase *currBook = GetCurrentBook();
 
-    if ( currBook )
-    {
-        wxPanel *panel = CreateUserCreatedPage( currBook );
+    if (currBook)
+    {
+        wxPanel *panel = CreateUserCreatedPage(currBook);
 
         currBook->InsertPage( 0, panel,
-            wxString::Format(INSERTED_PAGE_NAME wxT("%u"), ++s_pageIns), false,
+            wxString::Format(INSERTED_PAGE_NAME wxT("%u"), ++ s_pageIns), false,
             GetIconIndex(currBook) );
 
@@ -579,11 +595,12 @@
 }
 
+
 void MyFrame::OnDeleteCurPage(wxCommandEvent& WXUNUSED(event))
 {
     wxBookCtrlBase *currBook = GetCurrentBook();
 
-    if ( currBook )
-    {
-        int sel = currBook->GetSelection();
+    if (currBook)
+    {
+        const int sel = currBook->GetSelection();
 
         if (sel != wxNOT_FOUND)
@@ -600,5 +617,5 @@
     if ( currBook )
     {
-        int page = currBook->GetPageCount();
+        const int page = currBook->GetPageCount();
 
         if ( page != 0 )
@@ -613,5 +630,5 @@
     wxBookCtrlBase *currBook = GetCurrentBook();
 
-    if ( currBook )
+    if (currBook)
     {
         currBook->AdvanceSelection();
@@ -643,5 +660,5 @@
 
         wxString title;
-        title.Printf(wxT("Notebook and friends (%d pages, selection: %s)"), nPages, selection.c_str());
+        title.Printf(wxT("Preprocessor (%d pages, selection: %s)"), nPages, selection.c_str());
 
         SetTitle(title);
@@ -650,5 +667,5 @@
 
 #if USE_LOG
-    #define BOOKEVENT_LOG m_text->SetInsertionPointEnd();
+    #define BOOKEVENT_LOG mText->SetInsertionPointEnd();
 #else
     #define BOOKEVENT_LOG
Index: GTP/trunk/Lib/Vis/Preprocessing/FrontEnd/preprocessorFrontEnd.vcproj
===================================================================
--- GTP/trunk/Lib/Vis/Preprocessing/FrontEnd/preprocessorFrontEnd.vcproj	(revision 1558)
+++ GTP/trunk/Lib/Vis/Preprocessing/FrontEnd/preprocessorFrontEnd.vcproj	(revision 1563)
@@ -92,5 +92,5 @@
 				Optimization="2"
 				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="$(WXWIN)\lib\vc_lib\msw,$(WXWIN)\include,.,$(WXWIN)\samples"
+				AdditionalIncludeDirectories="&quot;$(WXWIN)\lib\vc_lib\msw&quot;;&quot;$(WXWIN)\include&quot;;.;&quot;$(WXWIN)\samples&quot;"
 				PreprocessorDefinitions="WIN32;__WXMSW__;_WINDOWS;NOPCH"
 				StringPooling="TRUE"
@@ -564,5 +564,5 @@
 				AdditionalOptions="/EHsc "
 				Optimization="0"
-				AdditionalIncludeDirectories="$(WXWIN)\lib\vc_lib\mswd,$(WXWIN)\include,.,$(WXWIN)\samples"
+				AdditionalIncludeDirectories="&quot;$(WXWIN)\lib\vc_lib\mswd&quot;;&quot;$(WXWIN)\include&quot;;.;&quot;$(WXWIN)\samples&quot;;&quot;$(WXWIN)\include\msvc&quot;"
 				PreprocessorDefinitions="WIN32;_DEBUG;__WXMSW__;__WXDEBUG__;_WINDOWS;NOPCH"
 				BasicRuntimeChecks="3"
Index: GTP/trunk/Lib/Vis/Preprocessing/FrontEnd/preprocessorFrontEnd.h
===================================================================
--- GTP/trunk/Lib/Vis/Preprocessing/FrontEnd/preprocessorFrontEnd.h	(revision 1558)
+++ GTP/trunk/Lib/Vis/Preprocessing/FrontEnd/preprocessorFrontEnd.h	(revision 1563)
@@ -29,9 +29,12 @@
 DECLARE_APP(MyApp)
 
+
 class MyFrame : public wxFrame
 {
 public:
-    MyFrame(const wxString& title, const wxPoint& pos = wxDefaultPosition,
-        const wxSize& size = wxDefaultSize, long style = wxDEFAULT_FRAME_STYLE|wxCLIP_CHILDREN|wxNO_FULL_REPAINT_ON_RESIZE);
+    MyFrame(const wxString& title, 
+			const wxPoint& pos = wxDefaultPosition,
+			const wxSize& size = wxDefaultSize, 
+			long style = wxDEFAULT_FRAME_STYLE | wxCLIP_CHILDREN | wxNO_FULL_REPAINT_ON_RESIZE);
 
     virtual ~MyFrame();
@@ -63,6 +66,11 @@
     wxBookCtrlBase *GetCurrentBook();
 
+	wxPanel *CreateUserCreatedPage(wxBookCtrlBase *parent);
+	wxPanel *CreatePreprocessorPage(wxBookCtrlBase *parent);
+	wxPanel *CreateViewCellsPage(wxBookCtrlBase *parent);
+	void CreateInitialPages(wxBookCtrlBase *parent);
+	wxPanel *CreatePage(wxBookCtrlBase *parent, const wxString&pageName);
+
 private:
-    wxLog *m_logTargetOld;
 
     int SelectFlag(int id, int nb, int lb, int chb);
@@ -71,31 +79,37 @@
 
     // Sample setup
-    int m_type;
-    int m_orient;
-    bool m_chkShowImages;
-    bool m_multi;
+    int mType;
+    int mOrient;
+    bool mChkShowImages;
+    bool mMulti;
 
+	wxLog *mLogTargetOld;
+
+	/////////
     // Controls
 
-    wxPanel *m_panel; // Panel containing notebook and other controls
+	/// Panel containing notebook and other controls
+    wxPanel *mPanel;
 
 #if wxUSE_NOTEBOOK
-    wxNotebook   *m_notebook;
+    wxNotebook   *mNotebook;
 #endif
 #if wxUSE_CHOICEBOOK
-    wxChoicebook *m_choicebook;
+    wxChoicebook *mChoicebook;
 #endif
 #if wxUSE_LISTBOOK
-    wxListbook   *m_listbook;
+    wxListbook   *mListbook;
 #endif
 
 #if USE_LOG
     // Log window
-    wxTextCtrl *m_text;
+    wxTextCtrl *mText;
 #endif // USE_LOG
 
-    wxBoxSizer *m_sizerFrame;
+	wxTextCtrl *mDetectEmptyViewSpaceText;
+	wxCheckBox *mDetectEmptyViewSpaceCheckBox;
 
-    wxImageList *m_imageList;
+    wxBoxSizer *mSizerFrame;
+    wxImageList *mImageList;
 
     DECLARE_EVENT_TABLE()
@@ -126,4 +140,15 @@
 };
 
+
+/*class PreprocessorFrontEnd
+{
+	wxPanel *CreateUserCreatedPage(wxBookCtrlBase *parent);
+	wxPanel *CreatePreprocessorPage(wxBookCtrlBase *parent);
+	wxPanel *CreateViewCellsPage(wxBookCtrlBase *parent);
+
+	MyFrame *mFrame;
+}*/
+
+
 /*
 Name of each notebook page.
@@ -131,7 +156,8 @@
 to decide what type of page it is.
 */
+#define PREPROCESSOR_PAGE_NAME wxT("Preprocessor")
+#define VIEWCELLS_PAGE_NAME  wxT("ViewCells")
 
 #define I_WAS_INSERTED_PAGE_NAME  wxT("Inserted")
-#define RADIOBUTTONS_PAGE_NAME wxT("Radiobuttons")
 #define VETO_PAGE_NAME wxT("Veto")
 #define MAXIMIZED_BUTTON_PAGE_NAME wxT("Maximized button")
Index: GTP/trunk/Lib/Vis/Preprocessing/src/GvsPreprocessor.h
===================================================================
--- GTP/trunk/Lib/Vis/Preprocessing/src/GvsPreprocessor.h	(revision 1545)
+++ GTP/trunk/Lib/Vis/Preprocessing/src/GvsPreprocessor.h	(revision 1563)
@@ -128,5 +128,5 @@
 	int mSamplingType;
 
-	AxisAlignedBox3 mViewSpaceBox;
+	//AxisAlignedBox3 mViewSpaceBox;
 	float mEps;
 	float mThreshold;
Index: GTP/trunk/Lib/Vis/Preprocessing/src/ViewCellBsp.h
===================================================================
--- GTP/trunk/Lib/Vis/Preprocessing/src/ViewCellBsp.h	(revision 1558)
+++ GTP/trunk/Lib/Vis/Preprocessing/src/ViewCellBsp.h	(revision 1563)
@@ -625,4 +625,7 @@
 	int	_CastRay(Ray &ray);
 
+	/** Casts line segment between origin and termination and returns
+		view cells which are touched by the line.
+	*/
 	int	CastLineSegment(const Vector3 &origin,
 						const Vector3 &termination,
@@ -630,4 +633,6 @@
 						);
 
+	/** Returns view cell this point is located in.
+	*/
 	ViewCell *GetViewCell(const Vector3 &point);
   
@@ -665,5 +670,4 @@
 	*/
 	BspLeaf *GetRandomLeaf(const bool onlyUnmailed = false);
-
 
 	/** Returns epsilon of this tree.
Index: GTP/trunk/Lib/Vis/Preprocessing/src/VspBspTree.cpp
===================================================================
--- GTP/trunk/Lib/Vis/Preprocessing/src/VspBspTree.cpp	(revision 1558)
+++ GTP/trunk/Lib/Vis/Preprocessing/src/VspBspTree.cpp	(revision 1563)
@@ -277,5 +277,5 @@
 		if (mesh) 
 		{	// // copy the mesh into polygons and add to BSP tree aabb
-			mBox.Include(viewCells[i]->GetBox()); 
+			mBoundingBox.Include(viewCells[i]->GetBox()); 
 			polysSize += AddMeshToPolygons(mesh,
 										   polys,
@@ -326,5 +326,5 @@
         if (mesh) // copy the mesh data to polygons
 		{
-			mBox.Include(object->GetBox()); // add to BSP tree aabb
+			mBoundingBox.Include(object->GetBox()); // add to BSP tree aabb
 			AddMeshToPolygons(mesh, polys, NULL);
 
@@ -344,9 +344,9 @@
 	if (forcedBoundingBox)
 	{
-		mBox = *forcedBoundingBox;
+		mBoundingBox = *forcedBoundingBox;
 	}
 	else // compute vsp tree bounding box
 	{
-		mBox.Initialize();
+		mBoundingBox.Initialize();
 
 		VssRayContainer::const_iterator rit, rit_end = sampleRays.end();
@@ -358,6 +358,6 @@
 
 			// compute bounding box of view space
-			mBox.Include(ray->GetTermination());
-			mBox.Include(ray->GetOrigin());
+			mBoundingBox.Include(ray->GetTermination());
+			mBoundingBox.Include(ray->GetOrigin());
 		}
 	}
@@ -393,5 +393,5 @@
 			Intersectable *obj = ray->mTerminationObject;
 
-			if ((mBox.IsInside(ray->mTermination) || !forcedBoundingBox) &&
+			if ((mBoundingBox.IsInside(ray->mTermination) || !forcedBoundingBox) &&
 				obj && !obj->Mailed())
 			{
@@ -419,8 +419,8 @@
 				//-- compute bounding box
 				if (!forcedBoundingBox)
-					mBox.Include(ray->mTermination);
-			}
-
-			if ((mBox.IsInside(ray->mOrigin) || !forcedBoundingBox) &&
+					mBoundingBox.Include(ray->mTermination);
+			}
+
+			if ((mBoundingBox.IsInside(ray->mOrigin) || !forcedBoundingBox) &&
 				ray->mOriginObject && 
 				!ray->mOriginObject->Mailed())
@@ -460,5 +460,5 @@
 
 		// TODO: not very efficient to implictly cast between rays types
-		if (mBox.GetRaySegment(hray, minT, maxT))
+		if (mBoundingBox.GetRaySegment(hray, minT, maxT))
 		{
 			float len = ray->Length();
@@ -473,7 +473,7 @@
 	// normalize
 	if (mUseAreaForPvs)
-		mTermMinProbability *= mBox.SurfaceArea(); 
+		mTermMinProbability *= mBoundingBox.SurfaceArea(); 
 	else 
-		mTermMinProbability *= mBox.GetVolume();
+		mTermMinProbability *= mBoundingBox.GetVolume();
 
 
@@ -547,5 +547,5 @@
 
 
-	mTotalCost = tData.mPvs * tData.mProbability / mBox.GetVolume();
+	mTotalCost = tData.mPvs * tData.mProbability / mBoundingBox.GetVolume();
 	mTotalPvsSize = tData.mPvs;
 	
@@ -652,5 +652,5 @@
 	tQueue.push(splitCandidate);
 
-	mTotalCost = tData.mPvs * tData.mProbability / mBox.GetVolume();
+	mTotalCost = tData.mPvs * tData.mProbability / mBoundingBox.GetVolume();
 	mTotalPvsSize = tData.mPvs;
 	
@@ -948,5 +948,5 @@
 			
 			float costDecr = 
-				(cFront + cBack - cData) / mBox.GetVolume();
+				(cFront + cBack - cData) / mBoundingBox.GetVolume();
 
 			mTotalCost += costDecr;
@@ -1109,5 +1109,5 @@
 	
 	const float costDecr = 
-		(cFront + cBack - cData) / mBox.GetVolume();
+		(cFront + cBack - cData) / mBoundingBox.GetVolume();
 
 	mTotalCost += costDecr;
@@ -1162,5 +1162,5 @@
 									   *backData.mGeometry,
 									   splitPlane,
-									   mBox,
+									   mBoundingBox,
 									   //0.0f);
 									   mEpsilon);
@@ -2003,5 +2003,5 @@
 								  geomBack,
 								  candidatePlane,
-								  mBox,
+								  mBoundingBox,
 								  //0.0f);
 								  mEpsilon);
@@ -2041,8 +2041,8 @@
 	const float newRenderCost = penaltyFront * pFront + penaltyBack * pBack;
 
-	const float renderCostDecrease = (oldRenderCost - newRenderCost) / mBox.GetVolume();
+	const float renderCostDecrease = (oldRenderCost - newRenderCost) / mBoundingBox.GetVolume();
 	
 	// take render cost of node into account to avoid being stuck in a local minimum
-	normalizedOldRenderCost = oldRenderCost / mBox.GetVolume();
+	normalizedOldRenderCost = oldRenderCost / mBoundingBox.GetVolume();
 	
 	return renderCostDecrease;
@@ -2108,5 +2108,5 @@
 														  geomBack,
 														  candidatePlane,
-														  mBox,
+														  mBoundingBox,
 														  //0.0f);
 														  mEpsilon);
@@ -2236,5 +2236,5 @@
 									*secondGeom,
 									interior->GetPlane(),
-									mBox,
+									mBoundingBox,
 									//0.0000001f);
 									mEpsilon);
@@ -2427,5 +2427,5 @@
 AxisAlignedBox3 VspBspTree::GetBoundingBox() const
 {
-	return mBox;
+	return mBoundingBox;
 }
 
@@ -2500,5 +2500,5 @@
 	float maxt, mint;
 
-	if (!mBox.GetRaySegment(ray, mint, maxt))
+	if (!mBoundingBox.GetRaySegment(ray, mint, maxt))
 		return 0;
 
@@ -2761,5 +2761,5 @@
 	PolygonContainer boxPolys;
 	
-	mBox.ExtractPolys(boxPolys);
+	mBoundingBox.ExtractPolys(boxPolys);
 	vector<Plane3> boxPlanes;
 
@@ -2930,5 +2930,7 @@
 
 		for (int j = 0; j < 4; ++ j)
-			vertices.push_back(mBox.GetFace(i).mVertices[j]);
+		{
+			vertices.push_back(mBoundingBox.GetFace(i).mVertices[j]);
+		}
 
 		Polygon3 *poly = new Polygon3(vertices);
@@ -2967,15 +2969,21 @@
 
 					if (backPoly->Valid(mEpsilon))
+					{
 						candidatePolys[i] = backPoly;
+					}
 					else
+					{
 						DEL_PTR(backPoly);
+					}
 
 					// outside, don't need this
 					DEL_PTR(frontPoly);
 					break;
+
 				// polygon outside of halfspace
 				case Polygon3::FRONT_SIDE:
 					DEL_PTR(candidatePolys[i]);
 					break;
+
 				// just take polygon as it is
 				case Polygon3::BACK_SIDE:
@@ -2989,7 +2997,18 @@
 		{
 			geom.Add(candidatePolys[i], candidatePlanes[i]);
-			//	geom.mPolys.push_back(candidates[i]);
-		}
-	}
+		}
+	}
+}
+
+
+bool VspBspTree::IsOutOfBounds(ViewCell *vc) const
+{
+	return vc->GetId() == OUT_OF_BOUNDS_ID;
+}
+
+
+void VspBspTree::SetViewCellsTree(ViewCellsTree *viewCellsTree)
+{
+	mViewCellsTree = viewCellsTree;
 }
 
@@ -3009,5 +3028,5 @@
 	for (it = leaves.begin(); it != it_end; ++ it)
 	{
-		if ((*it) == mOutOfBoundsCell)
+		if (IsOutOfBounds(*it))
 			continue;
 		
@@ -3120,5 +3139,5 @@
 								*bGeom,
 								interior->GetPlane(),
-								mBox,
+								mBoundingBox,
 								//0.0000001f);
 								eps);
@@ -3214,5 +3233,5 @@
 								*bGeom,
 								interior->GetPlane(),
-								mBox,
+								mBoundingBox,
 								//0.0000001f);
 								eps);
@@ -3709,5 +3728,5 @@
 									*secondGeom,
 									interior->GetPlane(),
-									mBox,
+									mBoundingBox,
 									//0.0000001f);
 									mEpsilon);
Index: GTP/trunk/Lib/Vis/Preprocessing/src/ViewCellBsp.cpp
===================================================================
--- GTP/trunk/Lib/Vis/Preprocessing/src/ViewCellBsp.cpp	(revision 1558)
+++ GTP/trunk/Lib/Vis/Preprocessing/src/ViewCellBsp.cpp	(revision 1563)
@@ -171,5 +171,6 @@
 mTimeStamp(1),
 mViewCellsTree(NULL),
-mOutOfBoundsCellPartOfTree(false)
+mOutOfBoundsCellPartOfTree(false),
+mOutOfBoundsCell(NULL)
 {
 	Randomize(); // initialise random generator for heuristics
@@ -956,5 +957,4 @@
 	{
 		tData = tStack.top();
-
 	    tStack.pop();
 
@@ -1010,17 +1010,17 @@
 		if (!mUsePredefinedViewCells)
 		{	// generate new view cell for each leaf
-			viewCell = new BspViewCell();
+			viewCell = new BspViewCell();cout << "g";
 		}
 		else
-		{
+		{	
 			// add predefined view cell to leaf
 			viewCell = dynamic_cast<BspViewCell *>(tData.mViewCell);
-
 			// from now on out of bounds cell can be handled as any other cell,
 			// responsibility for deleting has been shifted
-			if (viewCell == mOutOfBoundsCell)
+			if (IsOutOfBounds(viewCell))
 			{
 				mOutOfBoundsCellPartOfTree = true;
 			}
+		
 		}
 
@@ -1035,5 +1035,4 @@
 		else
 			viewCell->SetVolume(probability);
-
 		
 		///////////
@@ -1049,7 +1048,6 @@
 		}
 
-		if (1)EvaluateLeafStats(tData);
-		
-
+		if (1) EvaluateLeafStats(tData);
+		
 		////////
 		//-- clean up
@@ -2399,5 +2397,5 @@
 	{
 		// per definition out of bounds cell has zero volume
-		if ((*it) == mOutOfBoundsCell)
+		if (IsOutOfBounds(*it))
 			continue;
 
@@ -3325,33 +3323,39 @@
 ViewCell *BspTree::GetViewCell(const Vector3 &point)
 {
-  if (mRoot == NULL)
-	return NULL;
-  
-
-  stack<BspNode *> nodeStack;
-  nodeStack.push(mRoot);
-  
-  ViewCellLeaf *viewcell = NULL;
-  
-  while (!nodeStack.empty())  {
-	BspNode *node = nodeStack.top();
-	nodeStack.pop();
-	
-	if (node->IsLeaf()) {
-	  viewcell = dynamic_cast<BspLeaf *>(node)->mViewCell;
-	  break;
-	} else {
-	  
-	  BspInterior *interior = dynamic_cast<BspInterior *>(node);
-		
-	  // random decision
-	  if (interior->GetPlane().Side(point) < 0)
-		nodeStack.push(interior->GetBack());
-	  else
-		nodeStack.push(interior->GetFront());
-	}
-  }
-  
-  return viewcell;
+	if (mRoot == NULL)
+		return NULL;
+
+	stack<BspNode *> nodeStack;
+	nodeStack.push(mRoot);
+
+	ViewCellLeaf *viewcell = NULL;
+
+	while (!nodeStack.empty())  {
+		BspNode *node = nodeStack.top();
+		nodeStack.pop();
+
+		if (node->IsLeaf()) 
+		{
+			viewcell = dynamic_cast<BspLeaf *>(node)->mViewCell;
+			break;
+		} 
+		else 
+		{
+
+			BspInterior *interior = dynamic_cast<BspInterior *>(node);
+
+			// random decision
+			if (interior->GetPlane().Side(point) < 0)
+			{
+				nodeStack.push(interior->GetBack());
+			}
+			else
+			{
+				nodeStack.push(interior->GetFront());
+			}
+		}
+	}
+
+	return viewcell;
 }
 
Index: GTP/trunk/Lib/Vis/Preprocessing/src/Preprocessor.cpp
===================================================================
--- GTP/trunk/Lib/Vis/Preprocessing/src/Preprocessor.cpp	(revision 1545)
+++ GTP/trunk/Lib/Vis/Preprocessing/src/Preprocessor.cpp	(revision 1563)
@@ -422,4 +422,5 @@
 	///////
 	//-- parse view cells construction method
+
 	Environment::GetSingleton()->GetBoolValue("ViewCells.loadFromFile", mLoadViewCells);
 	char buf[100];
@@ -429,5 +430,7 @@
 		Environment::GetSingleton()->GetStringValue("ViewCells.filename", buf);
 		cout << "loading view cells from " << buf << endl;
+		
 		mViewCellsManager = ViewCellsManager::LoadViewCells(buf, &mObjects, true);
+
 		if (!mViewCellsManager)
 			return false;
@@ -440,6 +443,15 @@
 
 		// default view space is the extent of the scene
-		mViewCellsManager->SetViewSpaceBox(mSceneGraph->GetBox());
-
+		AxisAlignedBox3 box = mSceneGraph->GetBox();
+					
+		if (0)
+		{
+			// use a small box outside of the scene
+			box.Scale(Vector3(0.1f,0.5f,0.5f));
+			box.Translate(Vector3(Magnitude(mSceneGraph->GetBox().Size())*0.5f, 0, 0));
+		}
+
+		mViewCellsManager->SetViewSpaceBox(box);
+	 
 		bool loadVcGeometry;
 		Environment::GetSingleton()->GetBoolValue("ViewCells.loadGeometry", loadVcGeometry);
@@ -492,8 +504,6 @@
 
   
-bool Preprocessor::ConstructViewCells(const AxisAlignedBox3 &viewSpaceBox)
-{
-	mViewCellsManager->SetViewSpaceBox(viewSpaceBox);
-	
+bool Preprocessor::ConstructViewCells()
+{
 	// construct view cells using it's own set of samples
 	mViewCellsManager->Construct(this);
Index: GTP/trunk/Lib/Vis/Preprocessing/src/RssPreprocessor.cpp
===================================================================
--- GTP/trunk/Lib/Vis/Preprocessing/src/RssPreprocessor.cpp	(revision 1520)
+++ GTP/trunk/Lib/Vis/Preprocessing/src/RssPreprocessor.cpp	(revision 1563)
@@ -283,5 +283,5 @@
   exporter->SetWireframe();
 
-  if (1 || mViewSpaceBox) {
+  if (1) {
 	exporter->SetForcedMaterial(RgbColor(1,0,1));
 	exporter->ExportBox(mViewCellsManager->GetViewSpaceBox());
@@ -321,5 +321,5 @@
   exporter->SetWireframe();
 
-  if (1 || mViewSpaceBox) {
+  if (1) {
 	exporter->SetForcedMaterial(RgbColor(1,0,1));
 	exporter->ExportBox(mViewCellsManager->GetViewSpaceBox());
@@ -361,10 +361,4 @@
   exporter->SetWireframe();
   exporter->ExportKdTree(*mKdTree);
-	
-  if (mViewSpaceBox) {
-	exporter->SetForcedMaterial(RgbColor(1,0,0));
-	exporter->ExportBox(*mViewSpaceBox);
-	exporter->ResetForcedMaterial();
-  }
 	
   exporter->SetForcedMaterial(RgbColor(0,0,1));
@@ -510,36 +504,15 @@
   int totalSamples = 0;
 
-  mViewSpaceBox = NULL;
-
   // if not already loaded, construct view cells from file
   if (!mLoadViewCells)
   {
-	if (1) 
-	  mViewCellsManager->SetViewSpaceBox(mKdTree->GetBox());
-	else {
-	  AxisAlignedBox3 box = mKdTree->GetBox();
-	  
-	  if (1) {
-		// use a small box outside of the scene
-		box.Scale(Vector3(0.1f,0.5f,0.5f));
-		box.Translate(Vector3(Magnitude(mKdTree->GetBox().Size())*0.5f, 0, 0));
-	  } else {
-		float s = box.Size(0);
-		box.Scale(0.1f);
-		box.SetMin(0, box.Min(0) + s);
-		box.SetMax(0, box.Max(0) + s);
-	  }
-	 
-	  mViewCellsManager->SetViewSpaceBox(box);
-	}
-	
-	// construct view cells using it's own set of samples
-	mViewCellsManager->Construct(this);
-	
-	//-- several visualizations and statistics
-	Debug << "view cells construction finished: " << endl;
-	mViewCellsManager->PrintStatistics(Debug);
-  }
-  
+	  // construct view cells using it's own set of samples
+	  mViewCellsManager->Construct(this);
+
+	  //-- several visualizations and statistics
+	  Debug << "view cells construction finished: " << endl;
+	  mViewCellsManager->PrintStatistics(Debug);
+  }
+
   
   int rssPass = 0;
Index: GTP/trunk/Lib/Vis/Preprocessing/src/HierarchyManager.h
===================================================================
--- GTP/trunk/Lib/Vis/Preprocessing/src/HierarchyManager.h	(revision 1557)
+++ GTP/trunk/Lib/Vis/Preprocessing/src/HierarchyManager.h	(revision 1563)
@@ -195,5 +195,5 @@
 	/** Returns view space bounding box.
 	*/
-	AxisAlignedBox3 GetViewSpaceBox() const;
+	//AxisAlignedBox3 GetViewSpaceBox() const;
 	/** Returns object space bounding box.
 	*/
Index: GTP/trunk/Lib/Vis/Preprocessing/src/VssPreprocessor.cpp
===================================================================
--- GTP/trunk/Lib/Vis/Preprocessing/src/VssPreprocessor.cpp	(revision 1528)
+++ GTP/trunk/Lib/Vis/Preprocessing/src/VssPreprocessor.cpp	(revision 1563)
@@ -40,6 +40,4 @@
   
   useViewspacePlane = mUseViewSpaceBox; //hack
-
-  mViewSpaceBox.Initialize();
   
   Debug << "*********** vss preprocessor options **************" << endl;
@@ -158,5 +156,5 @@
 
   exporter->SetForcedMaterial(RgbColor(1,0,1));
-  exporter->ExportBox(mViewSpaceBox);
+  exporter->ExportBox(mViewCellsManager->GetViewSpaceBox());
   exporter->ResetForcedMaterial();
 
@@ -201,5 +199,5 @@
 
   exporter->SetForcedMaterial(RgbColor(1,0,0));
-  exporter->ExportBox(mViewSpaceBox);
+  exporter->ExportBox(mViewCellsManager->GetViewSpaceBox());
   exporter->ResetForcedMaterial();
 
@@ -373,310 +371,264 @@
 	Debug << "type: vss" << endl;
 
-  long startTime = GetTime();
-
-  int totalSamples = 0;
-
-
-  AxisAlignedBox3 box(mKdTree->GetBox());
-  
-  if (!useViewspacePlane) {
-	float size = 0.05f;
-	float s = 0.5f - size;
-	float olds = Magnitude(box.Size());
-	box.Enlarge(box.Size()*Vector3(-s));
-	Vector3 translation = Vector3(-olds*0.1f, 0, 0);
-	box.SetMin(box.Min() + translation);
-	box.SetMax(box.Max() + translation);
-  } else {
-
-	// sample city like heights
-	box.SetMin(1, box.Min(1) + box.Size(1)*0.2f);
-	box.SetMax(1, box.Min(1) + box.Size(1)*0.3f);
-  }
-
-  if (use2dSampling)
-	box.SetMax(1, box.Min(1));
-
-  cout << "use view space box=" << mUseViewSpaceBox << endl;
-
-  
-  if (mUseViewSpaceBox)
-  {
-	  if (!mEnlargeViewSpace)
-	  {
-		  mViewSpaceBox = AxisAlignedBox3(box);
-	  }
-	  else
-	  {
-		  mViewSpaceBox = AxisAlignedBox3(mKdTree->GetBox());
-
-		  if (0) 
-		  {
-			  // HACK: enlarge in y directon
-			  Vector3 size = mViewSpaceBox.Size();
-			
-			  size[1] *= 1.25;
-			  Vector3 enlarge(size[0] * 0.25f, size[1] * 0.0f, size[2] * 0.25f);
-			  //Vector3 enlarge(size[0] * 4.0f, 0.0f, 0.0f);
-
-			  mViewSpaceBox.Enlarge(enlarge);
-			  mViewSpaceBox.SetMax(mViewSpaceBox.Max() + enlarge);
-		  } 
-		  else 
-		  {
-			  AxisAlignedBox3 tbox(mViewSpaceBox);
-
-			  Vector3 size = mViewSpaceBox.Size();
-			  tbox.SetMax(0, mViewSpaceBox.Max(0) + size[0] * 0.5f);
-			  tbox.SetMin(0, mViewSpaceBox.Min(0) + size[0]);
-			  mViewSpaceBox = tbox;
-		  }		
-	  }
-  }
-  else
-  {
-	  mViewSpaceBox = AxisAlignedBox3(mKdTree->GetBox());
-  }
-  
-  mSceneGraph->CollectObjects(&mObjects);
-
-  if (!mLoadViewCells)
-  {
-	  //-- generate new view cells from the scratch
-	  //-- for construction the manager uses it's own set of samples
-	  ConstructViewCells(mViewSpaceBox);
-  }
+	const long startTime = GetTime();
+	int totalSamples = 0;
+
+	if (mUseViewSpaceBox)
+	{
+		AxisAlignedBox3 viewSpaceBox;
+		viewSpaceBox.Initialize();
+
+		viewSpaceBox = AxisAlignedBox3(mKdTree->GetBox());
+		AxisAlignedBox3 tbox(mViewCellsManager->GetViewSpaceBox());
+
+		const Vector3 size = tbox.Size();
+		viewSpaceBox.SetMax(0, tbox.Max(0) + size[0] * 0.5f);
+		viewSpaceBox.SetMin(0, tbox.Min(0) + size[0]);
+		 
+		// change the view space of the view cells manager
+		mViewCellsManager->SetViewSpaceBox(viewSpaceBox);
+	}
+
+
+	mSceneGraph->CollectObjects(&mObjects);
+
+	if (!mLoadViewCells)
+	{
+		//-- generate new view cells from the scratch
+		//-- for construction the manager uses it's own set of samples
+		ConstructViewCells();
+	}
 #if 0
-  else 
-  {	 
-	  //-- load view cells from file
-	  //-- test successful view cells loading by exporting them again
-      VssRayContainer dummies;
-	  mViewCellsManager->Visualize(mObjects, dummies);
-	  mViewCellsManager->ExportViewCells("test.xml.zip", mViewCellsManager->GetExportPvs(), mObjects);
-  }
+	else 
+	{	 
+		//-- load view cells from file
+		//-- test successful view cells loading by exporting them again
+		VssRayContainer dummies;
+		mViewCellsManager->Visualize(mObjects, dummies);
+		mViewCellsManager->ExportViewCells("test.xml.zip", mViewCellsManager->GetExportPvs(), mObjects);
+	}
 #endif
 
-  VssTree *vssTree = NULL; 
-  const long initialTime = GetTime();
-
-  if (mLoadInitialSamples)
-  {
-	  cout << "Loading samples from file ... ";
-	  LoadSamples(mVssRays, mObjects);
-	  cout << "finished\n" << endl;
-	  totalSamples = (int)mVssRays.size();
-  }
-  else
-  {
-	while (totalSamples < mInitialSamples) {
-		int passContributingSamples = 0;
-		int passSampleContributions = 0;
-		int passSamples = 0;
-
-		int index = 0;
-
-		int sampleContributions;
-
-		int s = Min(mSamplesPerPass, mInitialSamples);
-		for (int k=0; k < s; k++) 
+	VssTree *vssTree = NULL; 
+	const long initialTime = GetTime();
+
+	if (mLoadInitialSamples)
+	{
+		cout << "Loading samples from file ... ";
+		LoadSamples(mVssRays, mObjects);
+		cout << "finished\n" << endl;
+		totalSamples = (int)mVssRays.size();
+	}
+	else
+	{
+		while (totalSamples < mInitialSamples) {
+			int passContributingSamples = 0;
+			int passSampleContributions = 0;
+			int passSamples = 0;
+
+			int index = 0;
+
+			int sampleContributions;
+
+			int s = Min(mSamplesPerPass, mInitialSamples);
+			for (int k=0; k < s; k++) 
+			{
+				Vector3 viewpoint; 
+
+				mViewCellsManager->GetViewPoint(viewpoint);
+				const Vector3 direction = GetDirection(viewpoint, &mViewCellsManager->GetViewSpaceBox());
+
+				const SimpleRay sray(viewpoint, direction);
+				sampleContributions = mRayCaster->CastRay(sray, mVssRays, mViewCellsManager->GetViewSpaceBox(), true);
+
+				if (sampleContributions) {
+					passContributingSamples ++;
+					passSampleContributions += sampleContributions;
+				}
+				passSamples++;
+				totalSamples++;
+			}
+
+			mPass++;
+			int pvsSize = 0;
+			float avgRayContrib = (passContributingSamples > 0) ?
+				passSampleContributions/(float)passContributingSamples : 0;
+
+			cout << "#Pass " << mPass << " : t = " << TimeDiff(startTime, GetTime())*1e-3 << "s" << endl;
+			cout << "#TotalSamples=" << totalSamples/1000
+				<< "#SampleContributions=" << passSampleContributions << " ("
+				<< 100*passContributingSamples/(float)passSamples<<"%)" << " avgPVS="
+				<< pvsSize/(float)mObjects.size() << endl
+				<< "avg ray contrib=" << avgRayContrib << endl;
+
+			mStats <<
+				"#Pass\n" <<mPass<<endl<<
+				"#Time\n" << TimeDiff(startTime, GetTime())*1e-3 << endl<<
+				"#TotalSamples\n" << totalSamples<< endl<<
+				"#SampleContributions\n" << passSampleContributions << endl <<
+				"#PContributingSamples\n"<<100*passContributingSamples/(float)passSamples<<endl <<
+				"#AvgPVS\n"<< pvsSize/(float)mObjects.size() << endl <<
+				"#AvgRayContrib\n" << avgRayContrib << endl;
+		}
+
+		cout << "#totalPvsSize=" << mKdTree->CollectLeafPvs() << endl;
+
+
+
+	}
+
+
+	cout << "#totalRayStackSize=" << (int)mVssRays.size() << endl << flush;
+	Debug << (int)mVssRays.size() << " rays generated in " 
+		<< TimeDiff(initialTime, GetTime()) * 1e-3 << " seconds" << endl;
+
+	if (mStoreInitialSamples)
+	{
+		cout << "Writing " << (int)mVssRays.size() << " samples to file ... ";
+		ExportSamples(mVssRays);
+		cout << "finished\n" << endl;
+
+		/*VssRayContainer dummyRays;
+		LoadSamples(dummyRays, mObjects);
+		Debug << "rays " << (int)mVssRays.size() << " " << dummyRays.size() << endl;
+
+		for (int i = 0; i < (int)mVssRays.size(); ++ i)
 		{
-			Vector3 viewpoint; 
-		
-			mViewCellsManager->GetViewPoint(viewpoint);
-			const Vector3 direction = GetDirection(viewpoint, &mViewSpaceBox);
-
-			const SimpleRay sray(viewpoint, direction);
-			sampleContributions = mRayCaster->CastRay(sray, mVssRays, mViewSpaceBox, true);
-
-			if (sampleContributions) {
-				passContributingSamples ++;
-				passSampleContributions += sampleContributions;
+		Debug << mVssRays[i]->GetOrigin() << " " << mVssRays[i]->GetTermination() << " " << mVssRays[i]->mOriginObject << " " << mVssRays[i]->mTerminationObject << endl;
+		Debug << dummyRays[i]->GetOrigin() << " " << dummyRays[i]->GetTermination() << " " << dummyRays[i]->mOriginObject << " " << dummyRays[i]->mTerminationObject << endl << endl;
+		}*/
+	}
+
+
+	//int numExportRays = 2000;
+	int numExportRays = 0;
+
+	if (numExportRays) {
+		char filename[64];
+		sprintf(filename, "vss-rays-initial.x3d");
+		ExportRays(filename, mVssRays, numExportRays);
+	}
+
+	vssTree = new VssTree;
+	// viewcells = Construct(mVssRays);
+
+	vssTree->Construct(mVssRays, NULL);
+	cout<<"VssTree root PVS size = "<<vssTree->GetRootPvsSize()<<endl;
+
+	if (0) ExportRays("kdtree.x3d", mVssRays, 10);
+
+	if (0)
+	{
+		ExportVssTree("vss-tree-100.x3d", vssTree, Vector3(1,0,0));
+		ExportVssTree("vss-tree-001.x3d", vssTree, Vector3(0,0,1));
+		ExportVssTree("vss-tree-101.x3d", vssTree, Vector3(1,0,1));
+		ExportVssTree("vss-tree-101m.x3d", vssTree, Vector3(-1,0,-1));
+		ExportVssTreeLeaves(vssTree, 10);
+	}
+
+	// viewcells->UpdatePVS(newVssRays);
+	// get viewcells as kd tree boxes
+	vector<AxisAlignedBox3> kdViewcells;
+	if (0) {
+		vector<KdLeaf *> leaves;
+		mKdTree->CollectLeaves(leaves);
+		vector<KdLeaf *>::const_iterator it;
+		int targetLeaves = 50;
+		float prob = targetLeaves/(float)leaves.size();
+		for (it = leaves.begin(); it != leaves.end(); ++it)
+			if (RandomValue(0.0f,1.0f) < prob)
+				kdViewcells.push_back(mKdTree->GetBox(*it));
+
+		float avgPvs = GetAvgPvsSize(vssTree, kdViewcells);
+		cout<<"Initial average PVS size = "<<avgPvs<<endl;
+	}
+
+
+	int samples = 0;
+	int pass = 0;
+
+
+	// cast view cell samples
+	while (samples < mVssSamples) 
+	{
+
+		int num = mVssSamplesPerPass;
+		SimpleRayContainer rays;
+		VssRayContainer vssRays;
+
+		if (!mUseImportanceSampling) {
+			for (int j=0; j < num; j++) {
+				Vector3 viewpoint; 
+				mViewCellsManager->GetViewPoint(viewpoint);
+				Vector3 direction = GetDirection(viewpoint, NULL);
+				rays.push_back(SimpleRay(viewpoint, direction));
 			}
-			passSamples++;
-			totalSamples++;
+		} else {
+			num = GenerateImportanceRays(vssTree, num, rays);
 		}
 
-		mPass++;
-		int pvsSize = 0;
-		float avgRayContrib = (passContributingSamples > 0) ?
-			passSampleContributions/(float)passContributingSamples : 0;
-
-		cout << "#Pass " << mPass << " : t = " << TimeDiff(startTime, GetTime())*1e-3 << "s" << endl;
-		cout << "#TotalSamples=" << totalSamples/1000
-			<< "#SampleContributions=" << passSampleContributions << " ("
-			<< 100*passContributingSamples/(float)passSamples<<"%)" << " avgPVS="
-			<< pvsSize/(float)mObjects.size() << endl
-			<< "avg ray contrib=" << avgRayContrib << endl;
-
-		mStats <<
-			"#Pass\n" <<mPass<<endl<<
-			"#Time\n" << TimeDiff(startTime, GetTime())*1e-3 << endl<<
-			"#TotalSamples\n" << totalSamples<< endl<<
-			"#SampleContributions\n" << passSampleContributions << endl <<
-			"#PContributingSamples\n"<<100*passContributingSamples/(float)passSamples<<endl <<
-			"#AvgPVS\n"<< pvsSize/(float)mObjects.size() << endl <<
-			"#AvgRayContrib\n" << avgRayContrib << endl;
-	  }
- 
-	  cout << "#totalPvsSize=" << mKdTree->CollectLeafPvs() << endl;
-
-
-	  
-  }
- 
-
-  cout << "#totalRayStackSize=" << (int)mVssRays.size() << endl << flush;
-  Debug << (int)mVssRays.size() << " rays generated in " 
-	    << TimeDiff(initialTime, GetTime()) * 1e-3 << " seconds" << endl;
-
-  if (mStoreInitialSamples)
-  {
-	  cout << "Writing " << (int)mVssRays.size() << " samples to file ... ";
-	  ExportSamples(mVssRays);
-	  cout << "finished\n" << endl;
-
-	  /*VssRayContainer dummyRays;
-	  LoadSamples(dummyRays, mObjects);
-	  Debug << "rays " << (int)mVssRays.size() << " " << dummyRays.size() << endl;
-
-	  for (int i = 0; i < (int)mVssRays.size(); ++ i)
-	  {
-		  Debug << mVssRays[i]->GetOrigin() << " " << mVssRays[i]->GetTermination() << " " << mVssRays[i]->mOriginObject << " " << mVssRays[i]->mTerminationObject << endl;
-		  Debug << dummyRays[i]->GetOrigin() << " " << dummyRays[i]->GetTermination() << " " << dummyRays[i]->mOriginObject << " " << dummyRays[i]->mTerminationObject << endl << endl;
-	  }*/
-  }
-
-  
-  //int numExportRays = 2000;
-  int numExportRays = 0;
-
-  if (numExportRays) {
-	char filename[64];
-	sprintf(filename, "vss-rays-initial.x3d");
-	ExportRays(filename, mVssRays, numExportRays);
-  }
-
-  vssTree = new VssTree;
-  // viewcells = Construct(mVssRays);
-
-  vssTree->Construct(mVssRays, NULL);
-  cout<<"VssTree root PVS size = "<<vssTree->GetRootPvsSize()<<endl;
-
-  if (0) ExportRays("kdtree.x3d", mVssRays, 10);
-
-  if (0)
-  {
-	  ExportVssTree("vss-tree-100.x3d", vssTree, Vector3(1,0,0));
-	  ExportVssTree("vss-tree-001.x3d", vssTree, Vector3(0,0,1));
-	  ExportVssTree("vss-tree-101.x3d", vssTree, Vector3(1,0,1));
-	  ExportVssTree("vss-tree-101m.x3d", vssTree, Vector3(-1,0,-1));
-	  ExportVssTreeLeaves(vssTree, 10);
-  }
-
-  // viewcells->UpdatePVS(newVssRays);
-  // get viewcells as kd tree boxes
-  vector<AxisAlignedBox3> kdViewcells;
-  if (0) {
-	vector<KdLeaf *> leaves;
-	mKdTree->CollectLeaves(leaves);
-	vector<KdLeaf *>::const_iterator it;
-	int targetLeaves = 50;
-	float prob = targetLeaves/(float)leaves.size();
-	for (it = leaves.begin(); it != leaves.end(); ++it)
-	  if (RandomValue(0.0f,1.0f) < prob)
-		kdViewcells.push_back(mKdTree->GetBox(*it));
-
-	float avgPvs = GetAvgPvsSize(vssTree, kdViewcells);
-	cout<<"Initial average PVS size = "<<avgPvs<<endl;
-  }
-
-
-  int samples = 0;
-  int pass = 0;
-
-  
-  // cast view cell samples
-  while (samples < mVssSamples) 
-  {
-	
-	int num = mVssSamplesPerPass;
-	SimpleRayContainer rays;
-	VssRayContainer vssRays;
-
-	if (!mUseImportanceSampling) {
-	  for (int j=0; j < num; j++) {
-	   	Vector3 viewpoint; 
-		mViewCellsManager->GetViewPoint(viewpoint);
-		Vector3 direction = GetDirection(viewpoint, NULL);
-		rays.push_back(SimpleRay(viewpoint, direction));
-	  }
-	} else {
-	  num = GenerateImportanceRays(vssTree, num, rays);
-	}
-
-	CastRays(rays, vssRays, true);
-	vssTree->AddRays(vssRays);
-
-	if (0) {
-	  int subdivided = vssTree->UpdateSubdivision();
-	  cout<<"subdivided leafs = "<<subdivided<<endl;
-	}
-
-	float avgPvs = GetAvgPvsSize(vssTree, kdViewcells);
-	cout<<"Average PVS size = "<<avgPvs<<endl;
-
-	/// compute view cell contribution of rays
-	mViewCellsManager->ComputeSampleContributions(vssRays, true, false);
-	
-	if (numExportRays) {
-	  char filename[64];
-	  if (mUseImportanceSampling)
-		sprintf(filename, "vss-rays-i%04d.x3d", pass);
-	  else
-		sprintf(filename, "vss-rays-%04d.x3d", pass);
-
-	  ExportRays(filename, vssRays, numExportRays);
-	}
-
-	samples+=num;
-	float pvs = vssTree->GetAvgPvsSize();
-	cout<<"*****************************\n";
-	cout<<samples<<" avgPVS ="<<pvs<<endl;
-	cout<<"VssTree root PVS size = "<<vssTree->GetRootPvsSize()<<endl;
-	cout<<"*****************************\n";
-//	if (samples >= mVssSamples) break;
-	pass ++;
-  }
-
-  if (mTestBeamSampling && mUseGlRenderer)
-  {	
-	  TestBeamCasting(vssTree, mViewCellsManager, mObjects);
-  }
-
-  if (0)  Debug << vssTree->stat << endl;
-
-  if (0)
-  {
-	  VssRayContainer viewCellRays;
-	  // compute rays used for view cells construction
-	  const int numRays = mViewCellsManager->GetVisualizationSamples();
-	  vssTree->CollectRays(viewCellRays, numRays);
-  }
-
-
-  ////////////////////
-  //-- render simulation after construction
-
-  mRenderSimulator->RenderScene();
-  SimulationStatistics ss;
-  mRenderSimulator->GetStatistics(ss);
-  Debug << "\nFinal view cells partition render time\n" << ss << endl;
-  cout << "\nFinal view cells partition render time\n" << ss << endl;
-
-  delete vssTree;
-  
-  return true;
-}
-
-}
+		CastRays(rays, vssRays, true);
+		vssTree->AddRays(vssRays);
+
+		if (0) {
+			int subdivided = vssTree->UpdateSubdivision();
+			cout<<"subdivided leafs = "<<subdivided<<endl;
+		}
+
+		float avgPvs = GetAvgPvsSize(vssTree, kdViewcells);
+		cout<<"Average PVS size = "<<avgPvs<<endl;
+
+		/// compute view cell contribution of rays
+		mViewCellsManager->ComputeSampleContributions(vssRays, true, false);
+
+		if (numExportRays) {
+			char filename[64];
+			if (mUseImportanceSampling)
+				sprintf(filename, "vss-rays-i%04d.x3d", pass);
+			else
+				sprintf(filename, "vss-rays-%04d.x3d", pass);
+
+			ExportRays(filename, vssRays, numExportRays);
+		}
+
+		samples+=num;
+		float pvs = vssTree->GetAvgPvsSize();
+		cout<<"*****************************\n";
+		cout<<samples<<" avgPVS ="<<pvs<<endl;
+		cout<<"VssTree root PVS size = "<<vssTree->GetRootPvsSize()<<endl;
+		cout<<"*****************************\n";
+		//	if (samples >= mVssSamples) break;
+		pass ++;
+	}
+
+	if (mTestBeamSampling && mUseGlRenderer)
+	{	
+		TestBeamCasting(vssTree, mViewCellsManager, mObjects);
+	}
+
+	if (0)  Debug << vssTree->stat << endl;
+
+	if (0)
+	{
+		VssRayContainer viewCellRays;
+		// compute rays used for view cells construction
+		const int numRays = mViewCellsManager->GetVisualizationSamples();
+		vssTree->CollectRays(viewCellRays, numRays);
+	}
+
+
+	////////////////////
+	//-- render simulation after construction
+
+	mRenderSimulator->RenderScene();
+	SimulationStatistics ss;
+	mRenderSimulator->GetStatistics(ss);
+	Debug << "\nFinal view cells partition render time\n" << ss << endl;
+	cout << "\nFinal view cells partition render time\n" << ss << endl;
+
+	delete vssTree;
+
+	return true;
+}
+
+}
Index: GTP/trunk/Lib/Vis/Preprocessing/src/Preprocessor.h
===================================================================
--- GTP/trunk/Lib/Vis/Preprocessing/src/Preprocessor.h	(revision 1545)
+++ GTP/trunk/Lib/Vis/Preprocessing/src/Preprocessor.h	(revision 1563)
@@ -92,5 +92,5 @@
   /** Construct viewcells from the scratch 
   */
-  bool ConstructViewCells(const AxisAlignedBox3 &viewSpaceBox);
+  bool ConstructViewCells();
 
   /** Returns the specified sample strategy, NULL if no valid strategy.
Index: GTP/trunk/Lib/Vis/Preprocessing/src/BvHierarchy.cpp
===================================================================
--- GTP/trunk/Lib/Vis/Preprocessing/src/BvHierarchy.cpp	(revision 1551)
+++ GTP/trunk/Lib/Vis/Preprocessing/src/BvHierarchy.cpp	(revision 1563)
@@ -892,5 +892,5 @@
 	int nObjectsLeft = 0;
 	const int nTotalObjects = (int)tData.mNode->mObjects.size();
-	const float viewSpaceVol = mHierarchyManager->GetViewSpaceBox().GetVolume();
+	const float viewSpaceVol = mViewCellsManager->GetViewSpaceBox().GetVolume();
 
 	SortableEntryContainer::const_iterator backObjectsStart = mSubdivisionCandidates->begin();
@@ -1294,5 +1294,5 @@
 		const float area = box.SurfaceArea();
 
-		return (float)objects.size() * area / mHierarchyManager->GetViewSpaceBox().SurfaceArea();
+		return (float)objects.size() * area / mViewCellsManager->GetViewSpaceBox().SurfaceArea();
 	}
 	else
@@ -1300,5 +1300,5 @@
 		//-- render cost heuristics
 
-		const float viewSpaceVol = mHierarchyManager->GetViewSpaceBox().GetVolume();
+		const float viewSpaceVol = mViewCellsManager->GetViewSpaceBox().GetVolume();
 		// probability that view point lies in a view cell which sees this node
 		const float p = EvalViewCellsVolume(objects) / viewSpaceVol;	
@@ -1712,5 +1712,5 @@
 	bvhLeaf->SetSubdivisionCandidate(oSubdivisionCandidate);
 
-	const float viewSpaceVol = mHierarchyManager->GetViewSpaceBox().GetVolume();
+	const float viewSpaceVol = mViewCellsManager->GetViewSpaceBox().GetVolume();
 	mTotalCost = (float)objects.size() * prop / viewSpaceVol;
 
@@ -1822,5 +1822,5 @@
 	bvhLeaf->SetSubdivisionCandidate(oSubdivisionCandidate);
 
-	const float viewSpaceVol = mHierarchyManager->GetViewSpaceBox().GetVolume();
+	const float viewSpaceVol = mViewCellsManager->GetViewSpaceBox().GetVolume();
 	mTotalCost = (float)objects.size() * prop / viewSpaceVol;
 
Index: GTP/trunk/Lib/Vis/Preprocessing/src/SamplingPreprocessor.cpp
===================================================================
--- GTP/trunk/Lib/Vis/Preprocessing/src/SamplingPreprocessor.cpp	(revision 1520)
+++ GTP/trunk/Lib/Vis/Preprocessing/src/SamplingPreprocessor.cpp	(revision 1563)
@@ -118,7 +118,5 @@
 
   Randomize(0);
-  
-  long startTime = GetTime();
-  
+  const long startTime = GetTime();
   int totalSamples = 0;
 
@@ -126,9 +124,7 @@
   if (!mLoadViewCells)
   {
-	  ConstructViewCells(mKdTree->GetBox());
-  }
-  
-
-  
+	  ConstructViewCells();
+  }
+    
   int samples = 0;
   int i=0;
Index: GTP/trunk/Lib/Vis/Preprocessing/src/RssPreprocessor.h
===================================================================
--- GTP/trunk/Lib/Vis/Preprocessing/src/RssPreprocessor.h	(revision 1281)
+++ GTP/trunk/Lib/Vis/Preprocessing/src/RssPreprocessor.h	(revision 1563)
@@ -38,5 +38,5 @@
   bool mDirectionalSampling;
   
-  AxisAlignedBox3 *mViewSpaceBox;
+  //AxisAlignedBox3 *mViewSpaceBox;
 
   ofstream mStats;
Index: GTP/trunk/Lib/Vis/Preprocessing/src/VssPreprocessor.h
===================================================================
--- GTP/trunk/Lib/Vis/Preprocessing/src/VssPreprocessor.h	(revision 1486)
+++ GTP/trunk/Lib/Vis/Preprocessing/src/VssPreprocessor.h	(revision 1563)
@@ -26,5 +26,5 @@
   bool mUseImportanceSampling;
   bool mEnlargeViewSpace;
-  AxisAlignedBox3 mViewSpaceBox;
+  //AxisAlignedBox3 mViewSpaceBox;
 
   ofstream mStats;
Index: GTP/trunk/Lib/Vis/Preprocessing/src/ViewCellsManager.cpp
===================================================================
--- GTP/trunk/Lib/Vis/Preprocessing/src/ViewCellsManager.cpp	(revision 1557)
+++ GTP/trunk/Lib/Vis/Preprocessing/src/ViewCellsManager.cpp	(revision 1563)
@@ -233,11 +233,11 @@
   Mesh *m = vc->GetMesh();
   
-  if (m) {
-	m->ComputeBoundingBox();
-	return m->mBox;
+  if (m) 
+  {
+	  m->ComputeBoundingBox();
+	  return m->mBox;
   }
 
   AxisAlignedBox3 box;
-  
   box.Initialize();
   
@@ -289,5 +289,4 @@
 	{
 		VssRayContainer::const_iterator it, it_end = rays.end();
-
 		for (it = rays.begin(); it != it_end; ++ it)
 		{
@@ -298,8 +297,6 @@
 	{
 		VssRayContainer::const_iterator it, it_end = rays.end();
-
 		for (it = rays.begin(); it != it_end; ++ it)
 		{
-			//(*it)->Unref();
 			if (!(*it)->IsActive())
 				delete (*it);
@@ -322,5 +319,5 @@
 	mPreprocessor = preprocessor;
 	
-	
+
 	///////////////////////////////////////////////////////
 	//-- Initial sampling for the construction of the view cell hierarchy. 
@@ -361,6 +358,5 @@
 	{
 		//-- export initial view cell partition
-		Debug << "\nView cells after initial sampling:\n" 
-			  << mCurrentViewCellsStats << endl;
+		Debug << "\nView cells after initial sampling:\n" << mCurrentViewCellsStats << endl;
 
 		const string filename("viewcells.wrl");
@@ -428,20 +424,20 @@
 
 	
-#if 0
-	///////////////
-	//-- Get stats after the additional sampling step
-	//-- and before the bottom-up merge step
-
-	EvaluateViewCellsStats();
-	Debug << "\noriginal view cell partition before post process:\n" 
-		  << mCurrentViewCellsStats << endl;
-
-	mRenderer->RenderScene();
-	SimulationStatistics ss;
-	dynamic_cast<RenderSimulator *>(mRenderer)->GetStatistics(ss);
-
-    Debug << ss << endl;
-#endif
-
+	if (0)
+	{
+		///////////////
+		//-- Get stats after the additional sampling step
+		//-- and before the bottom-up merge step
+
+		EvaluateViewCellsStats();
+		Debug << "\noriginal view cell partition before post process:\n" 
+			  << mCurrentViewCellsStats << endl;
+	
+		mRenderer->RenderScene();
+		SimulationStatistics ss;
+		dynamic_cast<RenderSimulator *>(mRenderer)->GetStatistics(ss);
+
+		Debug << ss << endl;
+	}
 
 	////////////////////
@@ -612,10 +608,9 @@
 {
 	ViewCellsParser parser;
-
 	ViewCellsManager *vm = NULL;
 
 	if (parser.ParseViewCellsFile(filename, &vm, objects, bconverter))
 	{
-		long startTime = GetTime();
+		const long startTime = GetTime();
 
 		vm->ResetViewCells();
@@ -671,10 +666,9 @@
 		for (oit = objects.begin(); oit != oit_end; ++ oit)
 		{
-			MeshInstance *mi = dynamic_cast<MeshInstance *>(*oit);
-			const AxisAlignedBox3 box = mi->GetBox();
+			const AxisAlignedBox3 box = (*oit)->GetBox();
 
 			////////////
 			//-- the bounding boxes
-			stream << "<BoundingBox" << " id=\"" << mi->GetId() << "\""
+			stream << "<BoundingBox" << " id=\"" << (*oit)->GetId() << "\""
 				   << " min=\"" << box.Min().x << " " << box.Min().y << " " << box.Min().z << "\""
 				   << " max=\"" << box.Max().x << " " << box.Max().y << " " << box.Max().z << "\" />" << endl;
@@ -1262,6 +1256,4 @@
 											 const bool extrudeBaseTriangles)
 {
-	bool success;
-
 	/// we use predefined view cells from now on
 	mUsePredefinedViewCells = true;
@@ -1271,5 +1263,8 @@
 	{
 		Environment::GetSingleton()->GetFloatValue("ViewCells.height", parser.mViewCellHeight);
-		success = parser.ParseFile(filename, *this);
+		const bool success = parser.ParseFile(filename, *this);
+
+		if (!success)
+			return false;
 	}
 	else
@@ -1277,46 +1272,52 @@
 		// hack: use standard mesh loading
 		// create temporary scene graph for loading the view cells geometry
+		// note: delete the meshes as they are created two times for transformed mesh instances.
 		SceneGraphNode *root = new SceneGraphNode();
-		success = parser.ParseFile(filename, root, true);
-				
-		if (success)
-		{
-			ObjectContainer::const_iterator oit, oit_end = root->mGeometry.end();
-			for (oit = root->mGeometry.begin(); oit != oit_end; ++ oit)
+		const bool success = parser.ParseFile(filename, root, true);
+		
+		if (!success)
+		{
+			DEL_PTR(root);
+			return false;
+		}
+
+		ObjectContainer::const_iterator oit, oit_end = root->mGeometry.end();
+		
+		for (oit = root->mGeometry.begin(); oit != oit_end; ++ oit)
+		{
+			Mesh *mesh;
+			if ((*oit)->Type() == Intersectable::TRANSFORMED_MESH_INSTANCE)
 			{
-				if ((*oit)->Type() == Intersectable::TRANSFORMED_MESH_INSTANCE)
-				{
-					TransformedMeshInstance *mit = dynamic_cast<TransformedMeshInstance *>(*oit);
-					Mesh *mesh = MeshManager::GetSingleton()->CreateResource();
-					mit->GetTransformedMesh(*mesh);
-					mesh->ComputeBoundingBox();
-					mViewCells.push_back(GenerateViewCell(mesh));
-				}
-				else if ((*oit)->Type() == Intersectable::MESH_INSTANCE)
-				{
-					MeshInstance *mit = dynamic_cast<MeshInstance *>(*oit);
-					mViewCells.push_back(GenerateViewCell(mit->GetMesh()));
-				}			
+				TransformedMeshInstance *mit = dynamic_cast<TransformedMeshInstance *>(*oit);
+				mesh = MeshManager::GetSingleton()->CreateResource();
+				mit->GetTransformedMesh(*mesh);
 			}
-		}
+			else if ((*oit)->Type() == Intersectable::MESH_INSTANCE)
+			{
+				MeshInstance *mit = dynamic_cast<MeshInstance *>(*oit);
+				mesh = mit->GetMesh();
+			}
+			mesh->ComputeBoundingBox();
+			mViewCells.push_back(GenerateViewCell(mesh));
+		}
+
 		DEL_PTR(root);
 	}
 
-	if (success)
-	{
-		// set view space box to bounding box of the view cells
-		AxisAlignedBox3 bbox;
-		bbox.Initialize();
-		ViewCellContainer::iterator it = mViewCells.begin(), it_end = mViewCells.end();
-		for (; it != it_end; ++ it) 
-		{
-			bbox.Include(GetViewCellBox(*it));
-		}
-		SetViewSpaceBox(bbox);
-	
-		cout << "generated " << (int)mViewCells.size() << " view cells using the geometry from file " << filename << endl;
-	}
-
-	return success;
+	// set view space box to bounding box of the view cells
+	AxisAlignedBox3 bbox;
+	bbox.Initialize();
+	ViewCellContainer::iterator it = mViewCells.begin(), it_end = mViewCells.end();
+
+	for (; it != it_end; ++ it) 
+	{
+		bbox.Include((*it)->GetMesh()->mBox);
+	}
+
+	SetViewSpaceBox(bbox);
+	cout << "view space box: " << bbox << endl;
+	cout << "generated " << (int)mViewCells.size() << " view cells using the geometry " << filename << endl;
+
+	return true;
 }
 
@@ -2539,10 +2540,9 @@
 	VssRayContainer savedRays;
 
+	// choose a a number of rays based on the ratio of cast rays / requested rays
 	const int limit = min(mInitialSamples, (int)rays.size());
-
 	VssRayContainer::const_iterator it, it_end = rays.end();
 
 	const float prop = (float)limit / ((float)rays.size() + Limits::Small);
-
 	for (it = rays.begin(); it != it_end; ++ it)
 	{
@@ -2785,5 +2785,5 @@
 		return;
 	
-	int savedColorCode = mColorCode;
+	const int savedColorCode = mColorCode;
 	
 	if (1) // export final view cells
@@ -2989,17 +2989,6 @@
 												 const AxisAlignedBox3 *sceneBox,
 												 const AxisAlignedPlane *clipPlane
-												 ) const
-{
-	// out of bounds cell
-	//if (vc->GetId() == OUT_OF_BOUNDS_ID) return;
-
-	// export mesh if available
-	if (vc->GetMesh())
-	{
-		exporter->ExportMesh(vc->GetMesh());
-		return;
-	}
-
-	// otherwise construct from leaves
+													) const
+{
 	if (clipPlane)
 	{
@@ -3018,5 +3007,5 @@
 			mBspTree->ConstructGeometry(*it, geom);
 
-			const float eps = 0.00000001f;
+			const float eps = 0.0001f;
 			const int cf = geom.Side(plane, eps);
 
@@ -3032,7 +3021,7 @@
 								   mViewSpaceBox, 
 								   eps);
-	
+
 				if (back.Valid())
-				{	
+				{
 					exporter->ExportPolygons(back.GetPolys());
 				}			
@@ -3042,7 +3031,16 @@
 	else
 	{
-		BspNodeGeometry geom;
-		mBspTree->ConstructGeometry(vc, geom);
-		exporter->ExportPolygons(geom.GetPolys());
+		// export mesh if available
+		// TODO: some bug here?
+		if (1 && vc->GetMesh())
+		{
+			exporter->ExportMesh(vc->GetMesh());
+		}
+		else
+		{
+			BspNodeGeometry geom;
+			mBspTree->ConstructGeometry(vc, geom);
+			exporter->ExportPolygons(geom.GetPolys());
+		}
 	}
 }
@@ -3158,8 +3156,7 @@
 		for (oit = objects.begin(); oit != oit_end; ++ oit)
 		{
-			MeshInstance *mi = dynamic_cast<MeshInstance *>(*oit);
-			const AxisAlignedBox3 box = mi->GetBox();
+			const AxisAlignedBox3 box = (*oit)->GetBox();
 			
-			stream << "<BoundingBox" << " id=\"" << mi->GetId() << "\""
+			stream << "<BoundingBox" << " id=\"" << (*oit)->GetId() << "\""
 				   << " min=\"" << box.Min().x << " " << box.Min().y << " " << box.Min().z << "\""
 				   << " max=\"" << box.Max().x << " " << box.Max().y << " " << box.Max().z << "\" />" << endl;
@@ -4123,8 +4120,6 @@
 		{
 			cout << "exporting view cells after post process ... ";
-
 			if (0)
-			{
-				// export view space box
+			{	// export view space box
 				exporter->SetWireframe();
 				exporter->ExportBox(mViewSpaceBox);
@@ -4133,5 +4128,4 @@
 
 			Material m; 
-
 			m.mDiffuseColor.r = 0.0f;
 			m.mDiffuseColor.g = 0.5f;
@@ -4140,15 +4134,13 @@
             exporter->SetForcedMaterial(m);
 
-			if (0 && mExportGeometry)
+			if (1 && mExportGeometry)
 			{
 				exporter->ExportGeometry(objects);
 			}
 
-			// export rays
 			if (0 && mExportRays)
 			{
 				exporter->ExportRays(visRays, RgbColor(1, 0, 0));
 			}
-
 			ExportViewCellsForViz(exporter, NULL, GetClipPlane());
 
@@ -4500,6 +4492,4 @@
 													) const
 {
-	// out of bounds cell
-	//if (vc->GetId() == OUT_OF_BOUNDS_ID)	return;
 	if (clipPlane)
 	{
@@ -4513,5 +4503,4 @@
 		{
 			BspNodeGeometry geom;
-
 			BspNodeGeometry front;
 			BspNodeGeometry back;
@@ -4545,5 +4534,5 @@
 		// export mesh if available
 		// TODO: some bug here?
-		if (0 && vc->GetMesh())
+		if (1 && vc->GetMesh())
 		{
 			exporter->ExportMesh(vc->GetMesh());
@@ -5070,5 +5059,5 @@
 
 			// matt: hack for clamping scene
-			AxisAlignedBox3 bbox = mHierarchyManager->GetViewSpaceBox();
+			AxisAlignedBox3 bbox = mViewSpaceBox;
 			bbox.Scale(Vector3(0.5, 1, 0.5));
 			if (CLAMP_TO_BOX)
Index: GTP/trunk/Lib/Vis/Preprocessing/src/VspBspTree.h
===================================================================
--- GTP/trunk/Lib/Vis/Preprocessing/src/VspBspTree.h	(revision 1545)
+++ GTP/trunk/Lib/Vis/Preprocessing/src/VspBspTree.h	(revision 1563)
@@ -356,7 +356,14 @@
 	int ComputeBoxIntersections(const AxisAlignedBox3 &box, ViewCellContainer &viewCells) const;
 
-	/// pointer to the hierarchy of view cells
-	ViewCellsTree *mViewCellsTree;
-
+	/** Pointer to the view cells tree.
+	*/
+	void SetViewCellsTree(ViewCellsTree *vct);
+	
+	/** Returns true if this view cell prepresents
+		invalid view space.
+	*/
+	bool IsOutOfBounds(ViewCell *vc) const;
+
+	
 
 protected:
@@ -736,7 +743,10 @@
 
 	/// box around the whole view domain
-	AxisAlignedBox3 mBox;
-
-	
+	AxisAlignedBox3 mBoundingBox;
+
+	/// pointer to the hierarchy of view cells
+	ViewCellsTree *mViewCellsTree;
+
+
 	//-- termination critera
 
Index: GTP/trunk/Lib/Vis/Preprocessing/src/GzBinFileInputStream.h
===================================================================
--- GTP/trunk/Lib/Vis/Preprocessing/src/GzBinFileInputStream.h	(revision 1294)
+++ GTP/trunk/Lib/Vis/Preprocessing/src/GzBinFileInputStream.h	(revision 1563)
@@ -134,5 +134,5 @@
 inline bool GzBinFileInputStream::getIsOpen() const
 {
-	return bool (mStream.is_open());//(fSource != 0);
+	return mStream.is_open() != 0;//(fSource != 0);
 }
 
Index: GTP/trunk/Lib/Vis/Preprocessing/src/RssTree.cpp
===================================================================
--- GTP/trunk/Lib/Vis/Preprocessing/src/RssTree.cpp	(revision 1548)
+++ GTP/trunk/Lib/Vis/Preprocessing/src/RssTree.cpp	(revision 1563)
@@ -348,5 +348,5 @@
   } else {
 	mRoots.resize(1);
-	RssTreeLeaf *leaf = new RssTreeLeaf(NULL, rays.size());
+	RssTreeLeaf *leaf = new RssTreeLeaf(NULL, (int)rays.size());
 	leaf->bbox.Initialize();
 	leaf->dirBBox.Initialize();
@@ -1897,5 +1897,5 @@
   }
 
-  return rays.size();
+  return (int)rays.size();
 }
 
Index: GTP/trunk/Lib/Vis/Preprocessing/src/GvsPreprocessor.cpp
===================================================================
--- GTP/trunk/Lib/Vis/Preprocessing/src/GvsPreprocessor.cpp	(revision 1551)
+++ GTP/trunk/Lib/Vis/Preprocessing/src/GvsPreprocessor.cpp	(revision 1563)
@@ -184,5 +184,5 @@
 		SimpleRay sray(oldRay.mOrigin, p - oldRay.mOrigin);
 	
-		VssRay *newRay = mRayCaster->CastRay(sray, mViewSpaceBox, false);
+		VssRay *newRay = mRayCaster->CastRay(sray, mViewCellsManager->GetViewSpaceBox(), false);
 		//cout << "\np1: " << p1 << "\np : " <<  p << "\np2: " << p2 << endl;
 		if (!newRay) return 0;
@@ -293,5 +293,4 @@
 										 const VssRay &oldRay)
 {
-	cout << "r";
 	++ mReverseSamples;
 
@@ -393,5 +392,4 @@
 	const long startTime = GetTime();
 
-	mViewSpaceBox = mKdTree->GetBox();
 	Randomize(0);
 	
@@ -406,15 +404,16 @@
 
 	if (!mLoadViewCells)
-	{	/// construct the view cells from the scratch
-		ConstructViewCells(mViewSpaceBox);
-		cout << "view cells loaded" << endl;
+	{	
+		/// construct the view cells from the scratch
+		ConstructViewCells();
+		cout << "finished view cell construction" << endl;
 	}
 	else if (1)
-	{	 cout << "here2255566" << endl;	
+	{	
 		//-- load view cells from file
 		//-- test successful view cells loading by exporting them again
 		VssRayContainer dummies;
 		mViewCellsManager->Visualize(mObjects, dummies);
-		mViewCellsManager->ExportViewCells("test.xml.zip", mViewCellsManager->GetExportPvs(), mObjects);
+		mViewCellsManager->ExportViewCells("test.xml.gz", mViewCellsManager->GetExportPvs(), mObjects);
 	}
 
Index: GTP/trunk/Lib/Vis/Preprocessing/src/HierarchyManager.cpp
===================================================================
--- GTP/trunk/Lib/Vis/Preprocessing/src/HierarchyManager.cpp	(revision 1557)
+++ GTP/trunk/Lib/Vis/Preprocessing/src/HierarchyManager.cpp	(revision 1563)
@@ -163,9 +163,9 @@
 }
 
-
+/*
 AxisAlignedBox3 HierarchyManager::GetViewSpaceBox() const
 {
 	return mVspTree->mBoundingBox;
-}
+}*/
 
 
@@ -312,8 +312,8 @@
 	cout << "\nfinished in " << TimeDiff(startTime, GetTime()) * 1e-3 << " secs" << endl;
 
-#if _DEBUG
+/*#if _DEBUG
 	cout << "view space: " << GetViewSpaceBox() << endl;
 	cout << "object space:  " << GetObjectSpaceBox() << endl;
-#endif
+#endif*/
 
 	mObjectSpaceSubdivisionType = mSavedObjectSpaceSubdivisionType;
@@ -709,8 +709,8 @@
 	cout << "\nfinished in " << TimeDiff(startTime, GetTime()) * 1e-3 << " secs" << endl;
 
-#if _DEBUG
+/*#if _DEBUG
 	cout << "view space: " << GetViewSpaceBox() << endl;
 	cout << "object space:  " << GetObjectSpaceBox() << endl;
-#endif
+#endif*/
 
 	mHierarchyStats.Stop();
Index: GTP/trunk/Lib/Vis/Preprocessing/src/ViewCellsParser.cpp
===================================================================
--- GTP/trunk/Lib/Vis/Preprocessing/src/ViewCellsParser.cpp	(revision 1558)
+++ GTP/trunk/Lib/Vis/Preprocessing/src/ViewCellsParser.cpp	(revision 1563)
@@ -850,5 +850,5 @@
 
 		// set view space box
-		mVspBspTree->mBox = mViewSpaceBox;
+		mVspBspTree->mBoundingBox = mViewSpaceBox;
 
 		ViewCellsMap::iterator vit, vit_end = mViewCells.end();
Index: GTP/trunk/Lib/Vis/Preprocessing/data/artificial/hole.x3d
===================================================================
--- GTP/trunk/Lib/Vis/Preprocessing/data/artificial/hole.x3d	(revision 1563)
+++ GTP/trunk/Lib/Vis/Preprocessing/data/artificial/hole.x3d	(revision 1563)
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<X3D profile="Full">
+  <Scene>
+  <WorldInfo  info='"VRML2.0 created with Version 1.3, from Alias Maya 7.0"' title="hole"/>
+  <NavigationInfo  headlight="true" type='"EXAMINE" "ANY"' speed="1.0"/>
+  <Switch  whichChoice="-1">
+      <Shape >
+          <Appearance >
+              <Material  DEF="lambert1_0"  transparency="0.0" emissiveColor="0.0 0.0 0.0" shininess="0.0" diffuseColor="0.4 0.4 0.4" specularColor="0.0 0.0 0.0"/>
+          </Appearance>
+      </Shape>
+      <Shape >
+          <IndexedFaceSet  DEF="pPlane1_0Geo"  convex="false" coordIndex=" 0 1 12 11 -1 1 2 13 12 -1 2 3 14 13 -1 3 4 15 14 -1 4 5 16 15 -1 5 6 17 16 -1 6 7 18 17 -1 7 8 19 18 -1 8 9 20 19 -1 9 10 21 20 -1 11 12 23 22 -1 12 13 24 23 -1 13 14 25 24 -1 14 15 26 25 -1 15 16 27 26 -1 16 17 28 27 -1 17 18 29 28 -1 18 19 30 29 -1 19 20 31 30 -1 20 21 32 31 -1 22 23 34 33 -1 23 24 35 34 -1 24 25 36 35 -1 25 26 37 36 -1 26 27 38 37 -1 27 28 39 38 -1 28 29 40 39 -1 29 30 41 40 -1 30 31 42 41 -1 31 32 43 42 -1 33 34 45 44 -1 34 35 46 45 -1 35 36 47 46 -1 36 37 48 47 -1 37 38 49 48 -1 38 39 50 49 -1 39 40 51 50 -1 40 41 52 51 -1 41 42 53 52 -1 42 43 54 53 -1 44 45 56 55 -1 45 46 57 56 -1 46 47 58 57 -1 47 48 59 58 -1 49 50 61 60 -1 50 51 62 61 -1 51 52 63 62 -1 52 53 64 63 -1 53 54 65 64 -1 55 56 67 66 -1 56 57 68 67 -1 57 58 69 68 -1 58 59 70 69 -1 59 60 71 70 -1 60 61 72 71 -1 61 62 73 72 -1 62 63 74 73 -1 63 64 75 74 -1 64 65 76 75 -1 66 67 78 77 -1 67 68 79 78 -1 68 69 80 79 -1 69 70 81 80 -1 70 71 82 81 -1 71 72 83 82 -1 72 73 84 83 -1 73 74 85 84 -1 74 75 86 85 -1 75 76 87 86 -1 77 78 89 88 -1 78 79 90 89 -1 79 80 91 90 -1 80 81 92 91 -1 81 82 93 92 -1 82 83 94 93 -1 83 84 95 94 -1 84 85 96 95 -1 85 86 97 96 -1 86 87 98 97 -1 88 89 100 99 -1 89 90 101 100 -1 90 91 102 101 -1 91 92 103 102 -1 92 93 104 103 -1 93 94 105 104 -1 94 95 106 105 -1 95 96 107 106 -1 96 97 108 107 -1 97 98 109 108 -1 99 100 111 110 -1 100 101 112 111 -1 101 102 113 112 -1 102 103 114 113 -1 103 104 115 114 -1 104 105 116 115 -1 105 106 117 116 -1 106 107 118 117 -1 107 108 119 118 -1 108 109 120 119 -1" solid="false">
+              <Coordinate  DEF="pPlane1GeoPoints"  point="-0.5 -0.0 0.5, -0.4 -0.0 0.5, -0.3 -0.0 0.5, -0.2 -0.0 0.5, -0.1 -0.0 0.5, 0.0 -0.0 0.5, 0.1 -0.0 0.5, 0.2 -0.0 0.5, 0.3 -0.0 0.5, 0.4 -0.0 0.5, 0.5 -0.0 0.5, -0.5 -0.0 0.4, -0.4 -0.0 0.4, -0.3 -0.0 0.4, -0.2 -0.0 0.4, -0.1 -0.0 0.4, 0.0 -0.0 0.4, 0.1 -0.0 0.4, 0.2 -0.0 0.4, 0.3 -0.0 0.4, 0.4 -0.0 0.4, 0.5 -0.0 0.4, -0.5 -0.0 0.3, -0.4 -0.0 0.3, -0.3 -0.0 0.3, -0.2 -0.0 0.3, -0.1 -0.0 0.3, 0.0 -0.0 0.3, 0.1 -0.0 0.3, 0.2 -0.0 0.3, 0.3 -0.0 0.3, 0.4 -0.0 0.3, 0.5 -0.0 0.3, -0.5 -0.0 0.2, -0.4 -0.0 0.2, -0.3 -0.0 0.2, -0.2 -0.0 0.2, -0.1 -0.0 0.2, 0.0 -0.0 0.2, 0.1 -0.0 0.2, 0.2 -0.0 0.2, 0.3 -0.0 0.2, 0.4 -0.0 0.2, 0.5 -0.0 0.2, -0.5 -0.0 0.1, -0.4 -0.0 0.1, -0.3 -0.0 0.1, -0.2 -0.0 0.1, -0.1 -0.0 0.1, 0.0 -0.0 0.1, 0.1 -0.0 0.1, 0.2 -0.0 0.1, 0.3 -0.0 0.1, 0.4 -0.0 0.1, 0.5 -0.0 0.1, -0.5 0.0 -0.0, -0.4 0.0 -0.0, -0.3 0.0 -0.0, -0.2 0.0 -0.0, -0.1 0.0 -0.0, 0.0 0.0 -0.0, 0.1 0.0 -0.0, 0.2 0.0 -0.0, 0.3 0.0 -0.0, 0.4 0.0 -0.0, 0.5 0.0 -0.0, -0.5 0.0 -0.1, -0.4 0.0 -0.1, -0.3 0.0 -0.1, -0.2 0.0 -0.1, -0.1 0.0 -0.1, 0.0 0.0 -0.1, 0.1 0.0 -0.1, 0.2 0.0 -0.1, 0.3 0.0 -0.1, 0.4 0.0 -0.1, 0.5 0.0 -0.1, -0.5 0.0 -0.2, -0.4 0.0 -0.2, -0.3 0.0 -0.2, -0.2 0.0 -0.2, -0.1 0.0 -0.2, 0.0 0.0 -0.2, 0.1 0.0 -0.2, 0.2 0.0 -0.2, 0.3 0.0 -0.2, 0.4 0.0 -0.2, 0.5 0.0 -0.2, -0.5 0.0 -0.3, -0.4 0.0 -0.3, -0.3 0.0 -0.3, -0.2 0.0 -0.3, -0.1 0.0 -0.3, 0.0 0.0 -0.3, 0.1 0.0 -0.3, 0.2 0.0 -0.3, 0.3 0.0 -0.3, 0.4 0.0 -0.3, 0.5 0.0 -0.3, -0.5 0.0 -0.4, -0.4 0.0 -0.4, -0.3 0.0 -0.4, -0.2 0.0 -0.4, -0.1 0.0 -0.4, 0.0 0.0 -0.4, 0.1 0.0 -0.4, 0.2 0.0 -0.4, 0.3 0.0 -0.4, 0.4 0.0 -0.4, 0.5 0.0 -0.4, -0.5 0.0 -0.5, -0.4 0.0 -0.5, -0.3 0.0 -0.5, -0.2 0.0 -0.5, -0.1 0.0 -0.5, 0.0 0.0 -0.5, 0.1 0.0 -0.5, 0.2 0.0 -0.5, 0.3 0.0 -0.5, 0.4 0.0 -0.5, 0.5 0.0 -0.5, "/>
+          </IndexedFaceSet>
+      </Shape>
+      <Shape >
+          <IndexedFaceSet  DEF="pPlane2_0Geo"  convex="false" coordIndex=" 0 1 4 3 -1 1 2 5 4 -1 3 4 7 6 -1 4 5 8 7 -1" solid="false">
+              <Coordinate  DEF="pPlane2GeoPoints"  point="-0.5 -0.0 0.5, 0.0 -0.0 0.5, 0.5 -0.0 0.5, -0.5 0.0 0.0, 0.0 0.0 0.0, 0.5 0.0 0.0, -0.5 0.0 -0.5, 0.0 0.0 -0.5, 0.5 0.0 -0.5, "/>
+          </IndexedFaceSet>
+      </Shape>
+      <Shape >
+          <IndexedFaceSet  DEF="pSphere1_0Geo"  convex="false" coordIndex=" 0 1 36 35 -1 1 2 37 36 -1 2 3 38 37 -1 3 4 39 38 -1 4 5 40 39 -1 5 6 41 40 -1 6 7 42 41 -1 7 8 43 42 -1 8 9 44 43 -1 9 10 45 44 -1 10 11 46 45 -1 11 12 47 46 -1 12 13 48 47 -1 13 14 49 48 -1 14 15 50 49 -1 15 16 51 50 -1 16 17 52 51 -1 17 18 53 52 -1 18 19 54 53 -1 19 20 55 54 -1 20 21 56 55 -1 21 22 57 56 -1 22 23 58 57 -1 23 24 59 58 -1 24 25 60 59 -1 25 26 61 60 -1 26 27 62 61 -1 27 28 63 62 -1 28 29 64 63 -1 29 30 65 64 -1 30 31 66 65 -1 31 32 67 66 -1 32 33 68 67 -1 33 34 69 68 -1 34 0 35 69 -1 35 36 71 70 -1 36 37 72 71 -1 37 38 73 72 -1 38 39 74 73 -1 39 40 75 74 -1 40 41 76 75 -1 41 42 77 76 -1 42 43 78 77 -1 43 44 79 78 -1 44 45 80 79 -1 45 46 81 80 -1 46 47 82 81 -1 47 48 83 82 -1 48 49 84 83 -1 49 50 85 84 -1 50 51 86 85 -1 51 52 87 86 -1 52 53 88 87 -1 53 54 89 88 -1 54 55 90 89 -1 55 56 91 90 -1 56 57 92 91 -1 57 58 93 92 -1 58 59 94 93 -1 59 60 95 94 -1 60 61 96 95 -1 61 62 97 96 -1 62 63 98 97 -1 63 64 99 98 -1 64 65 100 99 -1 65 66 101 100 -1 66 67 102 101 -1 67 68 103 102 -1 68 69 104 103 -1 69 35 70 104 -1 70 71 106 105 -1 71 72 107 106 -1 72 73 108 107 -1 73 74 109 108 -1 74 75 110 109 -1 75 76 111 110 -1 76 77 112 111 -1 77 78 113 112 -1 78 79 114 113 -1 79 80 115 114 -1 80 81 116 115 -1 81 82 117 116 -1 82 83 118 117 -1 83 84 119 118 -1 84 85 120 119 -1 85 86 121 120 -1 86 87 122 121 -1 87 88 123 122 -1 88 89 124 123 -1 89 90 125 124 -1 90 91 126 125 -1 91 92 127 126 -1 92 93 128 127 -1 93 94 129 128 -1 94 95 130 129 -1 95 96 131 130 -1 96 97 132 131 -1 97 98 133 132 -1 98 99 134 133 -1 99 100 135 134 -1 100 101 136 135 -1 101 102 137 136 -1 102 103 138 137 -1 103 104 139 138 -1 104 70 105 139 -1 105 106 141 140 -1 106 107 142 141 -1 107 108 143 142 -1 108 109 144 143 -1 109 110 145 144 -1 110 111 146 145 -1 111 112 147 146 -1 112 113 148 147 -1 113 114 149 148 -1 114 115 150 149 -1 115 116 151 150 -1 116 117 152 151 -1 117 118 153 152 -1 118 119 154 153 -1 119 120 155 154 -1 120 121 156 155 -1 121 122 157 156 -1 122 123 158 157 -1 123 124 159 158 -1 124 125 160 159 -1 125 126 161 160 -1 126 127 162 161 -1 127 128 163 162 -1 128 129 164 163 -1 129 130 165 164 -1 130 131 166 165 -1 131 132 167 166 -1 132 133 168 167 -1 133 134 169 168 -1 134 135 170 169 -1 135 136 171 170 -1 136 137 172 171 -1 137 138 173 172 -1 138 139 174 173 -1 139 105 140 174 -1 140 141 176 175 -1 141 142 177 176 -1 142 143 178 177 -1 143 144 179 178 -1 144 145 180 179 -1 145 146 181 180 -1 146 147 182 181 -1 147 148 183 182 -1 148 149 184 183 -1 149 150 185 184 -1 150 151 186 185 -1 151 152 187 186 -1 152 153 188 187 -1 153 154 189 188 -1 154 155 190 189 -1 155 156 191 190 -1 156 157 192 191 -1 157 158 193 192 -1 158 159 194 193 -1 159 160 195 194 -1 160 161 196 195 -1 161 162 197 196 -1 162 163 198 197 -1 163 164 199 198 -1 164 165 200 199 -1 165 166 201 200 -1 166 167 202 201 -1 167 168 203 202 -1 168 169 204 203 -1 169 170 205 204 -1 170 171 206 205 -1 171 172 207 206 -1 172 173 208 207 -1 173 174 209 208 -1 174 140 175 209 -1 175 176 211 210 -1 176 177 212 211 -1 177 178 213 212 -1 178 179 214 213 -1 179 180 215 214 -1 180 181 216 215 -1 181 182 217 216 -1 182 183 218 217 -1 183 184 219 218 -1 184 185 220 219 -1 185 186 221 220 -1 186 187 222 221 -1 187 188 223 222 -1 188 189 224 223 -1 189 190 225 224 -1 190 191 226 225 -1 191 192 227 226 -1 192 193 228 227 -1 193 194 229 228 -1 194 195 230 229 -1 195 196 231 230 -1 196 197 232 231 -1 197 198 233 232 -1 198 199 234 233 -1 199 200 235 234 -1 200 201 236 235 -1 201 202 237 236 -1 202 203 238 237 -1 203 204 239 238 -1 204 205 240 239 -1 205 206 241 240 -1 206 207 242 241 -1 207 208 243 242 -1 208 209 244 243 -1 209 175 210 244 -1 210 211 246 245 -1 211 212 247 246 -1 212 213 248 247 -1 213 214 249 248 -1 214 215 250 249 -1 215 216 251 250 -1 216 217 252 251 -1 217 218 253 252 -1 218 219 254 253 -1 219 220 255 254 -1 220 221 256 255 -1 221 222 257 256 -1 222 223 258 257 -1 223 224 259 258 -1 224 225 260 259 -1 225 226 261 260 -1 226 227 262 261 -1 227 228 263 262 -1 228 229 264 263 -1 229 230 265 264 -1 230 231 266 265 -1 231 232 267 266 -1 232 233 268 267 -1 233 234 269 268 -1 234 235 270 269 -1 235 236 271 270 -1 236 237 272 271 -1 237 238 273 272 -1 238 239 274 273 -1 239 240 275 274 -1 240 241 276 275 -1 241 242 277 276 -1 242 243 278 277 -1 243 244 279 278 -1 244 210 245 279 -1 245 246 281 280 -1 246 247 282 281 -1 247 248 283 282 -1 248 249 284 283 -1 249 250 285 284 -1 250 251 286 285 -1 251 252 287 286 -1 252 253 288 287 -1 253 254 289 288 -1 254 255 290 289 -1 255 256 291 290 -1 256 257 292 291 -1 257 258 293 292 -1 258 259 294 293 -1 259 260 295 294 -1 260 261 296 295 -1 261 262 297 296 -1 262 263 298 297 -1 263 264 299 298 -1 264 265 300 299 -1 265 266 301 300 -1 266 267 302 301 -1 267 268 303 302 -1 268 269 304 303 -1 269 270 305 304 -1 270 271 306 305 -1 271 272 307 306 -1 272 273 308 307 -1 273 274 309 308 -1 274 275 310 309 -1 275 276 311 310 -1 276 277 312 311 -1 277 278 313 312 -1 278 279 314 313 -1 279 245 280 314 -1 280 281 316 315 -1 281 282 317 316 -1 282 283 318 317 -1 283 284 319 318 -1 284 285 320 319 -1 285 286 321 320 -1 286 287 322 321 -1 287 288 323 322 -1 288 289 324 323 -1 289 290 325 324 -1 290 291 326 325 -1 291 292 327 326 -1 292 293 328 327 -1 293 294 329 328 -1 294 295 330 329 -1 295 296 331 330 -1 296 297 332 331 -1 297 298 333 332 -1 298 299 334 333 -1 299 300 335 334 -1 300 301 336 335 -1 301 302 337 336 -1 302 303 338 337 -1 303 304 339 338 -1 304 305 340 339 -1 305 306 341 340 -1 306 307 342 341 -1 307 308 343 342 -1 308 309 344 343 -1 309 310 345 344 -1 310 311 346 345 -1 311 312 347 346 -1 312 313 348 347 -1 313 314 349 348 -1 314 280 315 349 -1 315 316 351 350 -1 316 317 352 351 -1 317 318 353 352 -1 318 319 354 353 -1 319 320 355 354 -1 320 321 356 355 -1 321 322 357 356 -1 322 323 358 357 -1 323 324 359 358 -1 324 325 360 359 -1 325 326 361 360 -1 326 327 362 361 -1 327 328 363 362 -1 328 329 364 363 -1 329 330 365 364 -1 330 331 366 365 -1 331 332 367 366 -1 332 333 368 367 -1 333 334 369 368 -1 334 335 370 369 -1 335 336 371 370 -1 336 337 372 371 -1 337 338 373 372 -1 338 339 374 373 -1 339 340 375 374 -1 340 341 376 375 -1 341 342 377 376 -1 342 343 378 377 -1 343 344 379 378 -1 344 345 380 379 -1 345 346 381 380 -1 346 347 382 381 -1 347 348 383 382 -1 348 349 384 383 -1 349 315 350 384 -1 350 351 386 385 -1 351 352 387 386 -1 352 353 388 387 -1 353 354 389 388 -1 354 355 390 389 -1 355 356 391 390 -1 356 357 392 391 -1 357 358 393 392 -1 358 359 394 393 -1 359 360 395 394 -1 360 361 396 395 -1 361 362 397 396 -1 362 363 398 397 -1 363 364 399 398 -1 364 365 400 399 -1 365 366 401 400 -1 366 367 402 401 -1 367 368 403 402 -1 368 369 404 403 -1 369 370 405 404 -1 370 371 406 405 -1 371 372 407 406 -1 372 373 408 407 -1 373 374 409 408 -1 374 375 410 409 -1 375 376 411 410 -1 376 377 412 411 -1 377 378 413 412 -1 378 379 414 413 -1 379 380 415 414 -1 380 381 416 415 -1 381 382 417 416 -1 382 383 418 417 -1 383 384 419 418 -1 384 350 385 419 -1 385 386 421 420 -1 386 387 422 421 -1 387 388 423 422 -1 388 389 424 423 -1 389 390 425 424 -1 390 391 426 425 -1 391 392 427 426 -1 392 393 428 427 -1 393 394 429 428 -1 394 395 430 429 -1 395 396 431 430 -1 396 397 432 431 -1 397 398 433 432 -1 398 399 434 433 -1 399 400 435 434 -1 400 401 436 435 -1 401 402 437 436 -1 402 403 438 437 -1 403 404 439 438 -1 404 405 440 439 -1 405 406 441 440 -1 406 407 442 441 -1 407 408 443 442 -1 408 409 444 443 -1 409 410 445 444 -1 410 411 446 445 -1 411 412 447 446 -1 412 413 448 447 -1 413 414 449 448 -1 414 415 450 449 -1 415 416 451 450 -1 416 417 452 451 -1 417 418 453 452 -1 418 419 454 453 -1 419 385 420 454 -1 420 421 456 455 -1 421 422 457 456 -1 422 423 458 457 -1 423 424 459 458 -1 424 425 460 459 -1 425 426 461 460 -1 426 427 462 461 -1 427 428 463 462 -1 428 429 464 463 -1 429 430 465 464 -1 430 431 466 465 -1 431 432 467 466 -1 432 433 468 467 -1 433 434 469 468 -1 434 435 470 469 -1 435 436 471 470 -1 436 437 472 471 -1 437 438 473 472 -1 438 439 474 473 -1 439 440 475 474 -1 440 441 476 475 -1 441 442 477 476 -1 442 443 478 477 -1 443 444 479 478 -1 444 445 480 479 -1 445 446 481 480 -1 446 447 482 481 -1 447 448 483 482 -1 448 449 484 483 -1 449 450 485 484 -1 450 451 486 485 -1 451 452 487 486 -1 452 453 488 487 -1 453 454 489 488 -1 454 420 455 489 -1 455 456 491 490 -1 456 457 492 491 -1 457 458 493 492 -1 458 459 494 493 -1 459 460 495 494 -1 460 461 496 495 -1 461 462 497 496 -1 462 463 498 497 -1 463 464 499 498 -1 464 465 500 499 -1 465 466 501 500 -1 466 467 502 501 -1 467 468 503 502 -1 468 469 504 503 -1 469 470 505 504 -1 470 471 506 505 -1 471 472 507 506 -1 472 473 508 507 -1 473 474 509 508 -1 474 475 510 509 -1 475 476 511 510 -1 476 477 512 511 -1 477 478 513 512 -1 478 479 514 513 -1 479 480 515 514 -1 480 481 516 515 -1 481 482 517 516 -1 482 483 518 517 -1 483 484 519 518 -1 484 485 520 519 -1 485 486 521 520 -1 486 487 522 521 -1 487 488 523 522 -1 488 489 524 523 -1 489 455 490 524 -1 490 491 526 525 -1 491 492 527 526 -1 492 493 528 527 -1 493 494 529 528 -1 494 495 530 529 -1 495 496 531 530 -1 496 497 532 531 -1 497 498 533 532 -1 498 499 534 533 -1 499 500 535 534 -1 500 501 536 535 -1 501 502 537 536 -1 502 503 538 537 -1 503 504 539 538 -1 504 505 540 539 -1 505 506 541 540 -1 506 507 542 541 -1 507 508 543 542 -1 508 509 544 543 -1 509 510 545 544 -1 510 511 546 545 -1 511 512 547 546 -1 512 513 548 547 -1 513 514 549 548 -1 514 515 550 549 -1 515 516 551 550 -1 516 517 552 551 -1 517 518 553 552 -1 518 519 554 553 -1 519 520 555 554 -1 520 521 556 555 -1 521 522 557 556 -1 522 523 558 557 -1 523 524 559 558 -1 524 490 525 559 -1 525 526 561 560 -1 526 527 562 561 -1 527 528 563 562 -1 528 529 564 563 -1 529 530 565 564 -1 530 531 566 565 -1 531 532 567 566 -1 532 533 568 567 -1 533 534 569 568 -1 534 535 570 569 -1 535 536 571 570 -1 536 537 572 571 -1 537 538 573 572 -1 538 539 574 573 -1 539 540 575 574 -1 540 541 576 575 -1 541 542 577 576 -1 542 543 578 577 -1 543 544 579 578 -1 544 545 580 579 -1 545 546 581 580 -1 546 547 582 581 -1 547 548 583 582 -1 548 549 584 583 -1 549 550 585 584 -1 550 551 586 585 -1 551 552 587 586 -1 552 553 588 587 -1 553 554 589 588 -1 554 555 590 589 -1 555 556 591 590 -1 556 557 592 591 -1 557 558 593 592 -1 558 559 594 593 -1 559 525 560 594 -1 560 561 596 595 -1 561 562 597 596 -1 562 563 598 597 -1 563 564 599 598 -1 564 565 600 599 -1 565 566 601 600 -1 566 567 602 601 -1 567 568 603 602 -1 568 569 604 603 -1 569 570 605 604 -1 570 571 606 605 -1 571 572 607 606 -1 572 573 608 607 -1 573 574 609 608 -1 574 575 610 609 -1 575 576 611 610 -1 576 577 612 611 -1 577 578 613 612 -1 578 579 614 613 -1 579 580 615 614 -1 580 581 616 615 -1 581 582 617 616 -1 582 583 618 617 -1 583 584 619 618 -1 584 585 620 619 -1 585 586 621 620 -1 586 587 622 621 -1 587 588 623 622 -1 588 589 624 623 -1 589 590 625 624 -1 590 591 626 625 -1 591 592 627 626 -1 592 593 628 627 -1 593 594 629 628 -1 594 560 595 629 -1 595 596 631 630 -1 596 597 632 631 -1 597 598 633 632 -1 598 599 634 633 -1 599 600 635 634 -1 600 601 636 635 -1 601 602 637 636 -1 602 603 638 637 -1 603 604 639 638 -1 604 605 640 639 -1 605 606 641 640 -1 606 607 642 641 -1 607 608 643 642 -1 608 609 644 643 -1 609 610 645 644 -1 610 611 646 645 -1 611 612 647 646 -1 612 613 648 647 -1 613 614 649 648 -1 614 615 650 649 -1 615 616 651 650 -1 616 617 652 651 -1 617 618 653 652 -1 618 619 654 653 -1 619 620 655 654 -1 620 621 656 655 -1 621 622 657 656 -1 622 623 658 657 -1 623 624 659 658 -1 624 625 660 659 -1 625 626 661 660 -1 626 627 662 661 -1 627 628 663 662 -1 628 629 664 663 -1 629 595 630 664 -1 630 631 666 665 -1 631 632 667 666 -1 632 633 668 667 -1 633 634 669 668 -1 634 635 670 669 -1 635 636 671 670 -1 636 637 672 671 -1 637 638 673 672 -1 638 639 674 673 -1 639 640 675 674 -1 640 641 676 675 -1 641 642 677 676 -1 642 643 678 677 -1 643 644 679 678 -1 644 645 680 679 -1 645 646 681 680 -1 646 647 682 681 -1 647 648 683 682 -1 648 649 684 683 -1 649 650 685 684 -1 650 651 686 685 -1 651 652 687 686 -1 652 653 688 687 -1 653 654 689 688 -1 654 655 690 689 -1 655 656 691 690 -1 656 657 692 691 -1 657 658 693 692 -1 658 659 694 693 -1 659 660 695 694 -1 660 661 696 695 -1 661 662 697 696 -1 662 663 698 697 -1 663 664 699 698 -1 664 630 665 699 -1 665 666 701 700 -1 666 667 702 701 -1 667 668 703 702 -1 668 669 704 703 -1 669 670 705 704 -1 670 671 706 705 -1 671 672 707 706 -1 672 673 708 707 -1 673 674 709 708 -1 674 675 710 709 -1 675 676 711 710 -1 676 677 712 711 -1 677 678 713 712 -1 678 679 714 713 -1 679 680 715 714 -1 680 681 716 715 -1 681 682 717 716 -1 682 683 718 717 -1 683 684 719 718 -1 684 685 720 719 -1 685 686 721 720 -1 686 687 722 721 -1 687 688 723 722 -1 688 689 724 723 -1 689 690 725 724 -1 690 691 726 725 -1 691 692 727 726 -1 692 693 728 727 -1 693 694 729 728 -1 694 695 730 729 -1 695 696 731 730 -1 696 697 732 731 -1 697 698 733 732 -1 698 699 734 733 -1 699 665 700 734 -1 700 701 736 735 -1 701 702 737 736 -1 702 703 738 737 -1 703 704 739 738 -1 704 705 740 739 -1 705 706 741 740 -1 706 707 742 741 -1 707 708 743 742 -1 708 709 744 743 -1 709 710 745 744 -1 710 711 746 745 -1 711 712 747 746 -1 712 713 748 747 -1 713 714 749 748 -1 714 715 750 749 -1 715 716 751 750 -1 716 717 752 751 -1 717 718 753 752 -1 718 719 754 753 -1 719 720 755 754 -1 720 721 756 755 -1 721 722 757 756 -1 722 723 758 757 -1 723 724 759 758 -1 724 725 760 759 -1 725 726 761 760 -1 726 727 762 761 -1 727 728 763 762 -1 728 729 764 763 -1 729 730 765 764 -1 730 731 766 765 -1 731 732 767 766 -1 732 733 768 767 -1 733 734 769 768 -1 734 700 735 769 -1 735 736 771 770 -1 736 737 772 771 -1 737 738 773 772 -1 738 739 774 773 -1 739 740 775 774 -1 740 741 776 775 -1 741 742 777 776 -1 742 743 778 777 -1 743 744 779 778 -1 744 745 780 779 -1 745 746 781 780 -1 746 747 782 781 -1 747 748 783 782 -1 748 749 784 783 -1 749 750 785 784 -1 750 751 786 785 -1 751 752 787 786 -1 752 753 788 787 -1 753 754 789 788 -1 754 755 790 789 -1 755 756 791 790 -1 756 757 792 791 -1 757 758 793 792 -1 758 759 794 793 -1 759 760 795 794 -1 760 761 796 795 -1 761 762 797 796 -1 762 763 798 797 -1 763 764 799 798 -1 764 765 800 799 -1 765 766 801 800 -1 766 767 802 801 -1 767 768 803 802 -1 768 769 804 803 -1 769 735 770 804 -1 770 771 806 805 -1 771 772 807 806 -1 772 773 808 807 -1 773 774 809 808 -1 774 775 810 809 -1 775 776 811 810 -1 776 777 812 811 -1 777 778 813 812 -1 778 779 814 813 -1 779 780 815 814 -1 780 781 816 815 -1 781 782 817 816 -1 782 783 818 817 -1 783 784 819 818 -1 784 785 820 819 -1 785 786 821 820 -1 786 787 822 821 -1 787 788 823 822 -1 788 789 824 823 -1 789 790 825 824 -1 790 791 826 825 -1 791 792 827 826 -1 792 793 828 827 -1 793 794 829 828 -1 794 795 830 829 -1 795 796 831 830 -1 796 797 832 831 -1 797 798 833 832 -1 798 799 834 833 -1 799 800 835 834 -1 800 801 836 835 -1 801 802 837 836 -1 802 803 838 837 -1 803 804 839 838 -1 804 770 805 839 -1 805 806 841 840 -1 806 807 842 841 -1 807 808 843 842 -1 808 809 844 843 -1 809 810 845 844 -1 810 811 846 845 -1 811 812 847 846 -1 812 813 848 847 -1 813 814 849 848 -1 814 815 850 849 -1 815 816 851 850 -1 816 817 852 851 -1 817 818 853 852 -1 818 819 854 853 -1 819 820 855 854 -1 820 821 856 855 -1 821 822 857 856 -1 822 823 858 857 -1 823 824 859 858 -1 824 825 860 859 -1 825 826 861 860 -1 826 827 862 861 -1 827 828 863 862 -1 828 829 864 863 -1 829 830 865 864 -1 830 831 866 865 -1 831 832 867 866 -1 832 833 868 867 -1 833 834 869 868 -1 834 835 870 869 -1 835 836 871 870 -1 836 837 872 871 -1 837 838 873 872 -1 838 839 874 873 -1 839 805 840 874 -1 840 841 876 875 -1 841 842 877 876 -1 842 843 878 877 -1 843 844 879 878 -1 844 845 880 879 -1 845 846 881 880 -1 846 847 882 881 -1 847 848 883 882 -1 848 849 884 883 -1 849 850 885 884 -1 850 851 886 885 -1 851 852 887 886 -1 852 853 888 887 -1 853 854 889 888 -1 854 855 890 889 -1 855 856 891 890 -1 856 857 892 891 -1 857 858 893 892 -1 858 859 894 893 -1 859 860 895 894 -1 860 861 896 895 -1 861 862 897 896 -1 862 863 898 897 -1 863 864 899 898 -1 864 865 900 899 -1 865 866 901 900 -1 866 867 902 901 -1 867 868 903 902 -1 868 869 904 903 -1 869 870 905 904 -1 870 871 906 905 -1 871 872 907 906 -1 872 873 908 907 -1 873 874 909 908 -1 874 840 875 909 -1 875 876 911 910 -1 876 877 912 911 -1 877 878 913 912 -1 878 879 914 913 -1 879 880 915 914 -1 880 881 916 915 -1 881 882 917 916 -1 882 883 918 917 -1 883 884 919 918 -1 884 885 920 919 -1 885 886 921 920 -1 886 887 922 921 -1 887 888 923 922 -1 888 889 924 923 -1 889 890 925 924 -1 890 891 926 925 -1 891 892 927 926 -1 892 893 928 927 -1 893 894 929 928 -1 894 895 930 929 -1 895 896 931 930 -1 896 897 932 931 -1 897 898 933 932 -1 898 899 934 933 -1 899 900 935 934 -1 900 901 936 935 -1 901 902 937 936 -1 902 903 938 937 -1 903 904 939 938 -1 904 905 940 939 -1 905 906 941 940 -1 906 907 942 941 -1 907 908 943 942 -1 908 909 944 943 -1 909 875 910 944 -1 910 911 946 945 -1 911 912 947 946 -1 912 913 948 947 -1 913 914 949 948 -1 914 915 950 949 -1 915 916 951 950 -1 916 917 952 951 -1 917 918 953 952 -1 918 919 954 953 -1 919 920 955 954 -1 920 921 956 955 -1 921 922 957 956 -1 922 923 958 957 -1 923 924 959 958 -1 924 925 960 959 -1 925 926 961 960 -1 926 927 962 961 -1 927 928 963 962 -1 928 929 964 963 -1 929 930 965 964 -1 930 931 966 965 -1 931 932 967 966 -1 932 933 968 967 -1 933 934 969 968 -1 934 935 970 969 -1 935 936 971 970 -1 936 937 972 971 -1 937 938 973 972 -1 938 939 974 973 -1 939 940 975 974 -1 940 941 976 975 -1 941 942 977 976 -1 942 943 978 977 -1 943 944 979 978 -1 944 910 945 979 -1 945 946 981 980 -1 946 947 982 981 -1 947 948 983 982 -1 948 949 984 983 -1 949 950 985 984 -1 950 951 986 985 -1 951 952 987 986 -1 952 953 988 987 -1 953 954 989 988 -1 954 955 990 989 -1 955 956 991 990 -1 956 957 992 991 -1 957 958 993 992 -1 958 959 994 993 -1 959 960 995 994 -1 960 961 996 995 -1 961 962 997 996 -1 962 963 998 997 -1 963 964 999 998 -1 964 965 1000 999 -1 965 966 1001 1000 -1 966 967 1002 1001 -1 967 968 1003 1002 -1 968 969 1004 1003 -1 969 970 1005 1004 -1 970 971 1006 1005 -1 971 972 1007 1006 -1 972 973 1008 1007 -1 973 974 1009 1008 -1 974 975 1010 1009 -1 975 976 1011 1010 -1 976 977 1012 1011 -1 977 978 1013 1012 -1 978 979 1014 1013 -1 979 945 980 1014 -1 980 981 1016 1015 -1 981 982 1017 1016 -1 982 983 1018 1017 -1 983 984 1019 1018 -1 984 985 1020 1019 -1 985 986 1021 1020 -1 986 987 1022 1021 -1 987 988 1023 1022 -1 988 989 1024 1023 -1 989 990 1025 1024 -1 990 991 1026 1025 -1 991 992 1027 1026 -1 992 993 1028 1027 -1 993 994 1029 1028 -1 994 995 1030 1029 -1 995 996 1031 1030 -1 996 997 1032 1031 -1 997 998 1033 1032 -1 998 999 1034 1033 -1 999 1000 1035 1034 -1 1000 1001 1036 1035 -1 1001 1002 1037 1036 -1 1002 1003 1038 1037 -1 1003 1004 1039 1038 -1 1004 1005 1040 1039 -1 1005 1006 1041 1040 -1 1006 1007 1042 1041 -1 1007 1008 1043 1042 -1 1008 1009 1044 1043 -1 1009 1010 1045 1044 -1 1010 1011 1046 1045 -1 1011 1012 1047 1046 -1 1012 1013 1048 1047 -1 1013 1014 1049 1048 -1 1014 980 1015 1049 -1 1015 1016 1051 1050 -1 1016 1017 1052 1051 -1 1017 1018 1053 1052 -1 1018 1019 1054 1053 -1 1019 1020 1055 1054 -1 1020 1021 1056 1055 -1 1021 1022 1057 1056 -1 1022 1023 1058 1057 -1 1023 1024 1059 1058 -1 1024 1025 1060 1059 -1 1025 1026 1061 1060 -1 1026 1027 1062 1061 -1 1027 1028 1063 1062 -1 1028 1029 1064 1063 -1 1029 1030 1065 1064 -1 1030 1031 1066 1065 -1 1031 1032 1067 1066 -1 1032 1033 1068 1067 -1 1033 1034 1069 1068 -1 1034 1035 1070 1069 -1 1035 1036 1071 1070 -1 1036 1037 1072 1071 -1 1037 1038 1073 1072 -1 1038 1039 1074 1073 -1 1039 1040 1075 1074 -1 1040 1041 1076 1075 -1 1041 1042 1077 1076 -1 1042 1043 1078 1077 -1 1043 1044 1079 1078 -1 1044 1045 1080 1079 -1 1045 1046 1081 1080 -1 1046 1047 1082 1081 -1 1047 1048 1083 1082 -1 1048 1049 1084 1083 -1 1049 1015 1050 1084 -1 1050 1051 1086 1085 -1 1051 1052 1087 1086 -1 1052 1053 1088 1087 -1 1053 1054 1089 1088 -1 1054 1055 1090 1089 -1 1055 1056 1091 1090 -1 1056 1057 1092 1091 -1 1057 1058 1093 1092 -1 1058 1059 1094 1093 -1 1059 1060 1095 1094 -1 1060 1061 1096 1095 -1 1061 1062 1097 1096 -1 1062 1063 1098 1097 -1 1063 1064 1099 1098 -1 1064 1065 1100 1099 -1 1065 1066 1101 1100 -1 1066 1067 1102 1101 -1 1067 1068 1103 1102 -1 1068 1069 1104 1103 -1 1069 1070 1105 1104 -1 1070 1071 1106 1105 -1 1071 1072 1107 1106 -1 1072 1073 1108 1107 -1 1073 1074 1109 1108 -1 1074 1075 1110 1109 -1 1075 1076 1111 1110 -1 1076 1077 1112 1111 -1 1077 1078 1113 1112 -1 1078 1079 1114 1113 -1 1079 1080 1115 1114 -1 1080 1081 1116 1115 -1 1081 1082 1117 1116 -1 1082 1083 1118 1117 -1 1083 1084 1119 1118 -1 1084 1050 1085 1119 -1 1085 1086 1121 1120 -1 1086 1087 1122 1121 -1 1087 1088 1123 1122 -1 1088 1089 1124 1123 -1 1089 1090 1125 1124 -1 1090 1091 1126 1125 -1 1091 1092 1127 1126 -1 1092 1093 1128 1127 -1 1093 1094 1129 1128 -1 1094 1095 1130 1129 -1 1095 1096 1131 1130 -1 1096 1097 1132 1131 -1 1097 1098 1133 1132 -1 1098 1099 1134 1133 -1 1099 1100 1135 1134 -1 1100 1101 1136 1135 -1 1101 1102 1137 1136 -1 1102 1103 1138 1137 -1 1103 1104 1139 1138 -1 1104 1105 1140 1139 -1 1105 1106 1141 1140 -1 1106 1107 1142 1141 -1 1107 1108 1143 1142 -1 1108 1109 1144 1143 -1 1109 1110 1145 1144 -1 1110 1111 1146 1145 -1 1111 1112 1147 1146 -1 1112 1113 1148 1147 -1 1113 1114 1149 1148 -1 1114 1115 1150 1149 -1 1115 1116 1151 1150 -1 1116 1117 1152 1151 -1 1117 1118 1153 1152 -1 1118 1119 1154 1153 -1 1119 1085 1120 1154 -1 1120 1121 1156 1155 -1 1121 1122 1157 1156 -1 1122 1123 1158 1157 -1 1123 1124 1159 1158 -1 1124 1125 1160 1159 -1 1125 1126 1161 1160 -1 1126 1127 1162 1161 -1 1127 1128 1163 1162 -1 1128 1129 1164 1163 -1 1129 1130 1165 1164 -1 1130 1131 1166 1165 -1 1131 1132 1167 1166 -1 1132 1133 1168 1167 -1 1133 1134 1169 1168 -1 1134 1135 1170 1169 -1 1135 1136 1171 1170 -1 1136 1137 1172 1171 -1 1137 1138 1173 1172 -1 1138 1139 1174 1173 -1 1139 1140 1175 1174 -1 1140 1141 1176 1175 -1 1141 1142 1177 1176 -1 1142 1143 1178 1177 -1 1143 1144 1179 1178 -1 1144 1145 1180 1179 -1 1145 1146 1181 1180 -1 1146 1147 1182 1181 -1 1147 1148 1183 1182 -1 1148 1149 1184 1183 -1 1149 1150 1185 1184 -1 1150 1151 1186 1185 -1 1151 1152 1187 1186 -1 1152 1153 1188 1187 -1 1153 1154 1189 1188 -1 1154 1120 1155 1189 -1 1 0 1190 -1 2 1 1190 -1 3 2 1190 -1 4 3 1190 -1 5 4 1190 -1 6 5 1190 -1 7 6 1190 -1 8 7 1190 -1 9 8 1190 -1 10 9 1190 -1 11 10 1190 -1 12 11 1190 -1 13 12 1190 -1 14 13 1190 -1 15 14 1190 -1 16 15 1190 -1 17 16 1190 -1 18 17 1190 -1 19 18 1190 -1 20 19 1190 -1 21 20 1190 -1 22 21 1190 -1 23 22 1190 -1 24 23 1190 -1 25 24 1190 -1 26 25 1190 -1 27 26 1190 -1 28 27 1190 -1 29 28 1190 -1 30 29 1190 -1 31 30 1190 -1 32 31 1190 -1 33 32 1190 -1 34 33 1190 -1 0 34 1190 -1 1155 1156 1191 -1 1156 1157 1191 -1 1157 1158 1191 -1 1158 1159 1191 -1 1159 1160 1191 -1 1160 1161 1191 -1 1161 1162 1191 -1 1162 1163 1191 -1 1163 1164 1191 -1 1164 1165 1191 -1 1165 1166 1191 -1 1166 1167 1191 -1 1167 1168 1191 -1 1168 1169 1191 -1 1169 1170 1191 -1 1170 1171 1191 -1 1171 1172 1191 -1 1172 1173 1191 -1 1173 1174 1191 -1 1174 1175 1191 -1 1175 1176 1191 -1 1176 1177 1191 -1 1177 1178 1191 -1 1178 1179 1191 -1 1179 1180 1191 -1 1180 1181 1191 -1 1181 1182 1191 -1 1182 1183 1191 -1 1183 1184 1191 -1 1184 1185 1191 -1 1185 1186 1191 -1 1186 1187 1191 -1 1187 1188 1191 -1 1188 1189 1191 -1 1189 1155 1191 -1" solid="false">
+              <Coordinate  DEF="pSphere1GeoPoints"  point="0.088 -0.996 -0.016, 0.084 -0.996 -0.031, 0.077 -0.996 -0.046, 0.068 -0.996 -0.059, 0.056 -0.996 -0.07, 0.042 -0.996 -0.079, 0.028 -0.996 -0.085, 0.012 -0.996 -0.089, -0.0040 -0.996 -0.09, -0.02 -0.996 -0.087, -0.035 -0.996 -0.082, -0.049 -0.996 -0.075, -0.062 -0.996 -0.065, -0.073 -0.996 -0.053, -0.081 -0.996 -0.039, -0.086 -0.996 -0.024, -0.089 -0.996 -0.0080, -0.089 -0.996 0.0080, -0.086 -0.996 0.024, -0.081 -0.996 0.039, -0.073 -0.996 0.053, -0.062 -0.996 0.065, -0.049 -0.996 0.075, -0.035 -0.996 0.082, -0.02 -0.996 0.087, -0.0040 -0.996 0.09, 0.012 -0.996 0.089, 0.028 -0.996 0.085, 0.042 -0.996 0.079, 0.056 -0.996 0.07, 0.068 -0.996 0.059, 0.077 -0.996 0.046, 0.084 -0.996 0.031, 0.088 -0.996 0.016, 0.09 -0.996 0.0, 0.176 -0.984 -0.032, 0.167 -0.984 -0.063, 0.153 -0.984 -0.092, 0.134 -0.984 -0.117, 0.111 -0.984 -0.14, 0.085 -0.984 -0.157, 0.055 -0.984 -0.17, 0.024 -0.984 -0.177, -0.0080 -0.984 -0.178, -0.04 -0.984 -0.174, -0.07 -0.984 -0.164, -0.098 -0.984 -0.149, -0.123 -0.984 -0.129, -0.144 -0.984 -0.105, -0.161 -0.984 -0.077, -0.172 -0.984 -0.048, -0.178 -0.984 -0.016, -0.178 -0.984 0.016, -0.172 -0.984 0.048, -0.161 -0.984 0.077, -0.144 -0.984 0.105, -0.123 -0.984 0.129, -0.098 -0.984 0.149, -0.07 -0.984 0.164, -0.04 -0.984 0.174, -0.0080 -0.984 0.178, 0.024 -0.984 0.177, 0.055 -0.984 0.17, 0.085 -0.984 0.157, 0.111 -0.984 0.14, 0.134 -0.984 0.117, 0.153 -0.984 0.092, 0.167 -0.984 0.063, 0.176 -0.984 0.032, 0.179 -0.984 0.0, 0.262 -0.964 -0.048, 0.249 -0.964 -0.093, 0.228 -0.964 -0.136, 0.2 -0.964 -0.175, 0.166 -0.964 -0.208, 0.126 -0.964 -0.234, 0.082 -0.964 -0.253, 0.036 -0.964 -0.264, -0.012 -0.964 -0.266, -0.059 -0.964 -0.259, -0.105 -0.964 -0.245, -0.147 -0.964 -0.222, -0.184 -0.964 -0.192, -0.215 -0.964 -0.156, -0.24 -0.964 -0.115, -0.256 -0.964 -0.071, -0.265 -0.964 -0.024, -0.265 -0.964 0.024, -0.256 -0.964 0.071, -0.24 -0.964 0.115, -0.215 -0.964 0.156, -0.184 -0.964 0.192, -0.147 -0.964 0.222, -0.105 -0.964 0.245, -0.059 -0.964 0.259, -0.012 -0.964 0.266, 0.036 -0.964 0.264, 0.082 -0.964 0.253, 0.126 -0.964 0.234, 0.166 -0.964 0.208, 0.2 -0.964 0.175, 0.228 -0.964 0.136, 0.249 -0.964 0.093, 0.262 -0.964 0.048, 0.266 -0.964 0.0, 0.346 -0.936 -0.063, 0.329 -0.936 -0.123, 0.302 -0.936 -0.18, 0.265 -0.936 -0.231, 0.219 -0.936 -0.275, 0.167 -0.936 -0.309, 0.109 -0.936 -0.334, 0.047 -0.936 -0.348, -0.016 -0.936 -0.351, -0.078 -0.936 -0.343, -0.138 -0.936 -0.323, -0.194 -0.936 -0.293, -0.243 -0.936 -0.254, -0.284 -0.936 -0.207, -0.317 -0.936 -0.152, -0.339 -0.936 -0.093, -0.35 -0.936 -0.031, -0.35 -0.936 0.031, -0.339 -0.936 0.093, -0.317 -0.936 0.152, -0.284 -0.936 0.207, -0.243 -0.936 0.254, -0.194 -0.936 0.293, -0.138 -0.936 0.323, -0.078 -0.936 0.343, -0.016 -0.936 0.351, 0.047 -0.936 0.348, 0.109 -0.936 0.334, 0.167 -0.936 0.309, 0.219 -0.936 0.275, 0.265 -0.936 0.231, 0.302 -0.936 0.18, 0.329 -0.936 0.123, 0.346 -0.936 0.063, 0.351 -0.936 0.0, 0.427 -0.901 -0.077, 0.406 -0.901 -0.152, 0.372 -0.901 -0.223, 0.327 -0.901 -0.285, 0.271 -0.901 -0.339, 0.206 -0.901 -0.382, 0.134 -0.901 -0.413, 0.058 -0.901 -0.43, -0.019 -0.901 -0.433, -0.097 -0.901 -0.423, -0.171 -0.901 -0.399, -0.239 -0.901 -0.362, -0.3 -0.901 -0.314, -0.351 -0.901 -0.255, -0.391 -0.901 -0.188, -0.418 -0.901 -0.115, -0.432 -0.901 -0.039, -0.432 -0.901 0.039, -0.418 -0.901 0.115, -0.391 -0.901 0.188, -0.351 -0.901 0.255, -0.3 -0.901 0.314, -0.239 -0.901 0.362, -0.171 -0.901 0.399, -0.097 -0.901 0.423, -0.019 -0.901 0.433, 0.058 -0.901 0.43, 0.134 -0.901 0.413, 0.206 -0.901 0.382, 0.271 -0.901 0.339, 0.327 -0.901 0.285, 0.372 -0.901 0.223, 0.406 -0.901 0.152, 0.427 -0.901 0.077, 0.434 -0.901 0.0, 0.505 -0.858 -0.092, 0.48 -0.858 -0.18, 0.44 -0.858 -0.263, 0.386 -0.858 -0.337, 0.32 -0.858 -0.401, 0.243 -0.858 -0.452, 0.158 -0.858 -0.488, 0.069 -0.858 -0.508, -0.023 -0.858 -0.512, -0.114 -0.858 -0.5, -0.202 -0.858 -0.472, -0.283 -0.858 -0.428, -0.354 -0.858 -0.371, -0.415 -0.858 -0.301, -0.462 -0.858 -0.223, -0.494 -0.858 -0.136, -0.511 -0.858 -0.046, -0.511 -0.858 0.046, -0.494 -0.858 0.136, -0.462 -0.858 0.223, -0.415 -0.858 0.301, -0.354 -0.858 0.371, -0.283 -0.858 0.428, -0.202 -0.858 0.472, -0.114 -0.858 0.5, -0.023 -0.858 0.512, 0.069 -0.858 0.508, 0.158 -0.858 0.488, 0.243 -0.858 0.452, 0.32 -0.858 0.401, 0.386 -0.858 0.337, 0.44 -0.858 0.263, 0.48 -0.858 0.18, 0.505 -0.858 0.092, 0.513 -0.858 0.0, 0.578 -0.809 -0.105, 0.55 -0.809 -0.207, 0.505 -0.809 -0.301, 0.443 -0.809 -0.387, 0.366 -0.809 -0.46, 0.279 -0.809 -0.518, 0.182 -0.809 -0.559, 0.079 -0.809 -0.582, -0.026 -0.809 -0.587, -0.131 -0.809 -0.573, -0.231 -0.809 -0.54, -0.324 -0.809 -0.491, -0.406 -0.809 -0.425, -0.476 -0.809 -0.345, -0.53 -0.809 -0.255, -0.567 -0.809 -0.156, -0.585 -0.809 -0.053, -0.585 -0.809 0.053, -0.567 -0.809 0.156, -0.53 -0.809 0.255, -0.476 -0.809 0.345, -0.406 -0.809 0.425, -0.324 -0.809 0.491, -0.231 -0.809 0.54, -0.131 -0.809 0.573, -0.026 -0.809 0.587, 0.079 -0.809 0.582, 0.182 -0.809 0.559, 0.279 -0.809 0.518, 0.366 -0.809 0.46, 0.443 -0.809 0.387, 0.505 -0.809 0.301, 0.55 -0.809 0.207, 0.578 -0.809 0.105, 0.588 -0.809 0.0, 0.647 -0.753 -0.117, 0.616 -0.753 -0.231, 0.565 -0.753 -0.337, 0.495 -0.753 -0.433, 0.41 -0.753 -0.514, 0.312 -0.753 -0.579, 0.203 -0.753 -0.626, 0.088 -0.753 -0.652, -0.03 -0.753 -0.657, -0.146 -0.753 -0.641, -0.259 -0.753 -0.605, -0.362 -0.753 -0.549, -0.455 -0.753 -0.476, -0.532 -0.753 -0.387, -0.593 -0.753 -0.285, -0.634 -0.753 -0.175, -0.655 -0.753 -0.059, -0.655 -0.753 0.059, -0.634 -0.753 0.175, -0.593 -0.753 0.285, -0.532 -0.753 0.387, -0.455 -0.753 0.476, -0.362 -0.753 0.549, -0.259 -0.753 0.605, -0.146 -0.753 0.641, -0.03 -0.753 0.657, 0.088 -0.753 0.652, 0.203 -0.753 0.626, 0.312 -0.753 0.579, 0.41 -0.753 0.514, 0.495 -0.753 0.433, 0.565 -0.753 0.337, 0.616 -0.753 0.231, 0.647 -0.753 0.117, 0.658 -0.753 0.0, 0.711 -0.691 -0.129, 0.677 -0.691 -0.254, 0.62 -0.691 -0.371, 0.544 -0.691 -0.476, 0.451 -0.691 -0.565, 0.343 -0.691 -0.636, 0.223 -0.691 -0.687, 0.097 -0.691 -0.716, -0.032 -0.691 -0.722, -0.161 -0.691 -0.705, -0.284 -0.691 -0.665, -0.398 -0.691 -0.603, -0.499 -0.691 -0.522, -0.585 -0.691 -0.425, -0.651 -0.691 -0.314, -0.697 -0.691 -0.192, -0.72 -0.691 -0.065, -0.72 -0.691 0.065, -0.697 -0.691 0.192, -0.651 -0.691 0.314, -0.585 -0.691 0.425, -0.499 -0.691 0.522, -0.398 -0.691 0.603, -0.284 -0.691 0.665, -0.161 -0.691 0.705, -0.032 -0.691 0.722, 0.097 -0.691 0.716, 0.223 -0.691 0.687, 0.343 -0.691 0.636, 0.451 -0.691 0.565, 0.544 -0.691 0.476, 0.62 -0.691 0.371, 0.677 -0.691 0.254, 0.711 -0.691 0.129, 0.723 -0.691 0.0, 0.769 -0.623 -0.14, 0.732 -0.623 -0.275, 0.671 -0.623 -0.401, 0.589 -0.623 -0.514, 0.487 -0.623 -0.611, 0.37 -0.623 -0.688, 0.242 -0.623 -0.744, 0.105 -0.623 -0.775, -0.035 -0.623 -0.781, -0.174 -0.623 -0.762, -0.307 -0.623 -0.719, -0.431 -0.623 -0.652, -0.54 -0.623 -0.565, -0.633 -0.623 -0.46, -0.704 -0.623 -0.339, -0.754 -0.623 -0.208, -0.779 -0.623 -0.07, -0.779 -0.623 0.07, -0.754 -0.623 0.208, -0.704 -0.623 0.339, -0.633 -0.623 0.46, -0.54 -0.623 0.565, -0.431 -0.623 0.652, -0.307 -0.623 0.719, -0.174 -0.623 0.762, -0.035 -0.623 0.781, 0.105 -0.623 0.775, 0.242 -0.623 0.744, 0.37 -0.623 0.688, 0.487 -0.623 0.611, 0.589 -0.623 0.514, 0.671 -0.623 0.401, 0.732 -0.623 0.275, 0.769 -0.623 0.14, 0.782 -0.623 0.0, 0.821 -0.551 -0.149, 0.781 -0.551 -0.293, 0.716 -0.551 -0.428, 0.628 -0.551 -0.549, 0.52 -0.551 -0.652, 0.395 -0.551 -0.735, 0.258 -0.551 -0.794, 0.112 -0.551 -0.827, -0.037 -0.551 -0.834, -0.186 -0.551 -0.814, -0.328 -0.551 -0.767, -0.46 -0.551 -0.697, -0.577 -0.551 -0.603, -0.675 -0.551 -0.491, -0.752 -0.551 -0.362, -0.804 -0.551 -0.222, -0.831 -0.551 -0.075, -0.831 -0.551 0.075, -0.804 -0.551 0.222, -0.752 -0.551 0.362, -0.675 -0.551 0.491, -0.577 -0.551 0.603, -0.46 -0.551 0.697, -0.328 -0.551 0.767, -0.186 -0.551 0.814, -0.037 -0.551 0.834, 0.112 -0.551 0.827, 0.258 -0.551 0.794, 0.395 -0.551 0.735, 0.52 -0.551 0.652, 0.628 -0.551 0.549, 0.716 -0.551 0.428, 0.781 -0.551 0.293, 0.821 -0.551 0.149, 0.835 -0.551 0.0, 0.866 -0.474 -0.157, 0.824 -0.474 -0.309, 0.756 -0.474 -0.452, 0.663 -0.474 -0.579, 0.549 -0.474 -0.688, 0.417 -0.474 -0.775, 0.272 -0.474 -0.837, 0.118 -0.474 -0.873, -0.04 -0.474 -0.88, -0.196 -0.474 -0.859, -0.346 -0.474 -0.81, -0.485 -0.474 -0.735, -0.609 -0.474 -0.636, -0.712 -0.474 -0.518, -0.793 -0.474 -0.382, -0.849 -0.474 -0.234, -0.877 -0.474 -0.079, -0.877 -0.474 0.079, -0.849 -0.474 0.234, -0.793 -0.474 0.382, -0.712 -0.474 0.518, -0.609 -0.474 0.636, -0.485 -0.474 0.735, -0.346 -0.474 0.81, -0.196 -0.474 0.859, -0.04 -0.474 0.88, 0.118 -0.474 0.873, 0.272 -0.474 0.837, 0.417 -0.474 0.775, 0.549 -0.474 0.688, 0.663 -0.474 0.579, 0.756 -0.474 0.452, 0.824 -0.474 0.309, 0.866 -0.474 0.157, 0.881 -0.474 0.0, 0.905 -0.393 -0.164, 0.861 -0.393 -0.323, 0.789 -0.393 -0.472, 0.692 -0.393 -0.605, 0.573 -0.393 -0.719, 0.436 -0.393 -0.81, 0.284 -0.393 -0.875, 0.123 -0.393 -0.911, -0.041 -0.393 -0.919, -0.205 -0.393 -0.896, -0.361 -0.393 -0.846, -0.507 -0.393 -0.767, -0.635 -0.393 -0.665, -0.744 -0.393 -0.54, -0.828 -0.393 -0.399, -0.886 -0.393 -0.245, -0.916 -0.393 -0.082, -0.916 -0.393 0.082, -0.886 -0.393 0.245, -0.828 -0.393 0.399, -0.744 -0.393 0.54, -0.635 -0.393 0.665, -0.507 -0.393 0.767, -0.361 -0.393 0.846, -0.205 -0.393 0.896, -0.041 -0.393 0.919, 0.123 -0.393 0.911, 0.284 -0.393 0.875, 0.436 -0.393 0.81, 0.573 -0.393 0.719, 0.692 -0.393 0.605, 0.789 -0.393 0.472, 0.861 -0.393 0.323, 0.905 -0.393 0.164, 0.92 -0.393 0.0, 0.936 -0.309 -0.17, 0.89 -0.309 -0.334, 0.816 -0.309 -0.488, 0.716 -0.309 -0.626, 0.593 -0.309 -0.744, 0.451 -0.309 -0.837, 0.294 -0.309 -0.905, 0.128 -0.309 -0.942, -0.043 -0.309 -0.95, -0.212 -0.309 -0.927, -0.374 -0.309 -0.875, -0.524 -0.309 -0.794, -0.657 -0.309 -0.687, -0.769 -0.309 -0.559, -0.857 -0.309 -0.413, -0.917 -0.309 -0.253, -0.947 -0.309 -0.085, -0.947 -0.309 0.085, -0.917 -0.309 0.253, -0.857 -0.309 0.413, -0.769 -0.309 0.559, -0.657 -0.309 0.687, -0.524 -0.309 0.794, -0.374 -0.309 0.875, -0.212 -0.309 0.927, -0.043 -0.309 0.95, 0.128 -0.309 0.942, 0.294 -0.309 0.905, 0.451 -0.309 0.837, 0.593 -0.309 0.744, 0.716 -0.309 0.626, 0.816 -0.309 0.488, 0.89 -0.309 0.334, 0.936 -0.309 0.17, 0.951 -0.309 0.0, 0.959 -0.223 -0.174, 0.913 -0.223 -0.343, 0.837 -0.223 -0.5, 0.734 -0.223 -0.641, 0.608 -0.223 -0.762, 0.462 -0.223 -0.859, 0.301 -0.223 -0.927, 0.131 -0.223 -0.966, -0.044 -0.223 -0.974, -0.217 -0.223 -0.95, -0.383 -0.223 -0.896, -0.537 -0.223 -0.814, -0.674 -0.223 -0.705, -0.789 -0.223 -0.573, -0.878 -0.223 -0.423, -0.94 -0.223 -0.259, -0.971 -0.223 -0.087, -0.971 -0.223 0.087, -0.94 -0.223 0.259, -0.878 -0.223 0.423, -0.789 -0.223 0.573, -0.674 -0.223 0.705, -0.537 -0.223 0.814, -0.383 -0.223 0.896, -0.217 -0.223 0.95, -0.044 -0.223 0.974, 0.131 -0.223 0.966, 0.301 -0.223 0.927, 0.462 -0.223 0.859, 0.608 -0.223 0.762, 0.734 -0.223 0.641, 0.837 -0.223 0.5, 0.913 -0.223 0.343, 0.959 -0.223 0.174, 0.975 -0.223 0.0, 0.975 -0.134 -0.177, 0.928 -0.134 -0.348, 0.851 -0.134 -0.508, 0.746 -0.134 -0.652, 0.618 -0.134 -0.775, 0.47 -0.134 -0.873, 0.306 -0.134 -0.942, 0.133 -0.134 -0.982, -0.044 -0.134 -0.99, -0.221 -0.134 -0.966, -0.389 -0.134 -0.911, -0.546 -0.134 -0.827, -0.685 -0.134 -0.716, -0.802 -0.134 -0.582, -0.893 -0.134 -0.43, -0.955 -0.134 -0.264, -0.987 -0.134 -0.089, -0.987 -0.134 0.089, -0.955 -0.134 0.264, -0.893 -0.134 0.43, -0.802 -0.134 0.582, -0.685 -0.134 0.716, -0.546 -0.134 0.827, -0.389 -0.134 0.911, -0.221 -0.134 0.966, -0.044 -0.134 0.99, 0.133 -0.134 0.982, 0.306 -0.134 0.942, 0.47 -0.134 0.873, 0.618 -0.134 0.775, 0.746 -0.134 0.652, 0.851 -0.134 0.508, 0.928 -0.134 0.348, 0.975 -0.134 0.177, 0.991 -0.134 0.0, 0.983 -0.045 -0.178, 0.935 -0.045 -0.351, 0.858 -0.045 -0.512, 0.752 -0.045 -0.657, 0.623 -0.045 -0.781, 0.473 -0.045 -0.88, 0.309 -0.045 -0.95, 0.134 -0.045 -0.99, -0.045 -0.045 -0.998, -0.222 -0.045 -0.974, -0.393 -0.045 -0.919, -0.55 -0.045 -0.834, -0.69 -0.045 -0.722, -0.808 -0.045 -0.587, -0.9 -0.045 -0.433, -0.963 -0.045 -0.266, -0.995 -0.045 -0.09, -0.995 -0.045 0.09, -0.963 -0.045 0.266, -0.9 -0.045 0.433, -0.808 -0.045 0.587, -0.69 -0.045 0.722, -0.55 -0.045 0.834, -0.393 -0.045 0.919, -0.222 -0.045 0.974, -0.045 -0.045 0.998, 0.134 -0.045 0.99, 0.309 -0.045 0.95, 0.473 -0.045 0.88, 0.623 -0.045 0.781, 0.752 -0.045 0.657, 0.858 -0.045 0.512, 0.935 -0.045 0.351, 0.983 -0.045 0.178, 0.999 -0.045 0.0, 0.983 0.045 -0.178, 0.935 0.045 -0.351, 0.858 0.045 -0.512, 0.752 0.045 -0.657, 0.623 0.045 -0.781, 0.473 0.045 -0.88, 0.309 0.045 -0.95, 0.134 0.045 -0.99, -0.045 0.045 -0.998, -0.222 0.045 -0.974, -0.393 0.045 -0.919, -0.55 0.045 -0.834, -0.69 0.045 -0.722, -0.808 0.045 -0.587, -0.9 0.045 -0.433, -0.963 0.045 -0.266, -0.995 0.045 -0.09, -0.995 0.045 0.09, -0.963 0.045 0.266, -0.9 0.045 0.433, -0.808 0.045 0.587, -0.69 0.045 0.722, -0.55 0.045 0.834, -0.393 0.045 0.919, -0.222 0.045 0.974, -0.045 0.045 0.998, 0.134 0.045 0.99, 0.309 0.045 0.95, 0.473 0.045 0.88, 0.623 0.045 0.781, 0.752 0.045 0.657, 0.858 0.045 0.512, 0.935 0.045 0.351, 0.983 0.045 0.178, 0.999 0.045 0.0, 0.975 0.134 -0.177, 0.928 0.134 -0.348, 0.851 0.134 -0.508, 0.746 0.134 -0.652, 0.618 0.134 -0.775, 0.47 0.134 -0.873, 0.306 0.134 -0.942, 0.133 0.134 -0.982, -0.044 0.134 -0.99, -0.221 0.134 -0.966, -0.389 0.134 -0.911, -0.546 0.134 -0.827, -0.685 0.134 -0.716, -0.802 0.134 -0.582, -0.893 0.134 -0.43, -0.955 0.134 -0.264, -0.987 0.134 -0.089, -0.987 0.134 0.089, -0.955 0.134 0.264, -0.893 0.134 0.43, -0.802 0.134 0.582, -0.685 0.134 0.716, -0.546 0.134 0.827, -0.389 0.134 0.911, -0.221 0.134 0.966, -0.044 0.134 0.99, 0.133 0.134 0.982, 0.306 0.134 0.942, 0.47 0.134 0.873, 0.618 0.134 0.775, 0.746 0.134 0.652, 0.851 0.134 0.508, 0.928 0.134 0.348, 0.975 0.134 0.177, 0.991 0.134 0.0, 0.959 0.223 -0.174, 0.913 0.223 -0.343, 0.837 0.223 -0.5, 0.734 0.223 -0.641, 0.608 0.223 -0.762, 0.462 0.223 -0.859, 0.301 0.223 -0.927, 0.131 0.223 -0.966, -0.044 0.223 -0.974, -0.217 0.223 -0.95, -0.383 0.223 -0.896, -0.537 0.223 -0.814, -0.674 0.223 -0.705, -0.789 0.223 -0.573, -0.878 0.223 -0.423, -0.94 0.223 -0.259, -0.971 0.223 -0.087, -0.971 0.223 0.087, -0.94 0.223 0.259, -0.878 0.223 0.423, -0.789 0.223 0.573, -0.674 0.223 0.705, -0.537 0.223 0.814, -0.383 0.223 0.896, -0.217 0.223 0.95, -0.044 0.223 0.974, 0.131 0.223 0.966, 0.301 0.223 0.927, 0.462 0.223 0.859, 0.608 0.223 0.762, 0.734 0.223 0.641, 0.837 0.223 0.5, 0.913 0.223 0.343, 0.959 0.223 0.174, 0.975 0.223 0.0, 0.936 0.309 -0.17, 0.89 0.309 -0.334, 0.816 0.309 -0.488, 0.716 0.309 -0.626, 0.593 0.309 -0.744, 0.451 0.309 -0.837, 0.294 0.309 -0.905, 0.128 0.309 -0.942, -0.043 0.309 -0.95, -0.212 0.309 -0.927, -0.374 0.309 -0.875, -0.524 0.309 -0.794, -0.657 0.309 -0.687, -0.769 0.309 -0.559, -0.857 0.309 -0.413, -0.917 0.309 -0.253, -0.947 0.309 -0.085, -0.947 0.309 0.085, -0.917 0.309 0.253, -0.857 0.309 0.413, -0.769 0.309 0.559, -0.657 0.309 0.687, -0.524 0.309 0.794, -0.374 0.309 0.875, -0.212 0.309 0.927, -0.043 0.309 0.95, 0.128 0.309 0.942, 0.294 0.309 0.905, 0.451 0.309 0.837, 0.593 0.309 0.744, 0.716 0.309 0.626, 0.816 0.309 0.488, 0.89 0.309 0.334, 0.936 0.309 0.17, 0.951 0.309 0.0, 0.905 0.393 -0.164, 0.861 0.393 -0.323, 0.789 0.393 -0.472, 0.692 0.393 -0.605, 0.573 0.393 -0.719, 0.436 0.393 -0.81, 0.284 0.393 -0.875, 0.123 0.393 -0.911, -0.041 0.393 -0.919, -0.205 0.393 -0.896, -0.361 0.393 -0.846, -0.507 0.393 -0.767, -0.635 0.393 -0.665, -0.744 0.393 -0.54, -0.828 0.393 -0.399, -0.886 0.393 -0.245, -0.916 0.393 -0.082, -0.916 0.393 0.082, -0.886 0.393 0.245, -0.828 0.393 0.399, -0.744 0.393 0.54, -0.635 0.393 0.665, -0.507 0.393 0.767, -0.361 0.393 0.846, -0.205 0.393 0.896, -0.041 0.393 0.919, 0.123 0.393 0.911, 0.284 0.393 0.875, 0.436 0.393 0.81, 0.573 0.393 0.719, 0.692 0.393 0.605, 0.789 0.393 0.472, 0.861 0.393 0.323, 0.905 0.393 0.164, 0.92 0.393 0.0, 0.866 0.474 -0.157, 0.824 0.474 -0.309, 0.756 0.474 -0.452, 0.663 0.474 -0.579, 0.549 0.474 -0.688, 0.417 0.474 -0.775, 0.272 0.474 -0.837, 0.118 0.474 -0.873, -0.04 0.474 -0.88, -0.196 0.474 -0.859, -0.346 0.474 -0.81, -0.485 0.474 -0.735, -0.609 0.474 -0.636, -0.712 0.474 -0.518, -0.793 0.474 -0.382, -0.849 0.474 -0.234, -0.877 0.474 -0.079, -0.877 0.474 0.079, -0.849 0.474 0.234, -0.793 0.474 0.382, -0.712 0.474 0.518, -0.609 0.474 0.636, -0.485 0.474 0.735, -0.346 0.474 0.81, -0.196 0.474 0.859, -0.04 0.474 0.88, 0.118 0.474 0.873, 0.272 0.474 0.837, 0.417 0.474 0.775, 0.549 0.474 0.688, 0.663 0.474 0.579, 0.756 0.474 0.452, 0.824 0.474 0.309, 0.866 0.474 0.157, 0.881 0.474 0.0, 0.821 0.551 -0.149, 0.781 0.551 -0.293, 0.716 0.551 -0.428, 0.628 0.551 -0.549, 0.52 0.551 -0.652, 0.395 0.551 -0.735, 0.258 0.551 -0.794, 0.112 0.551 -0.827, -0.037 0.551 -0.834, -0.186 0.551 -0.814, -0.328 0.551 -0.767, -0.46 0.551 -0.697, -0.577 0.551 -0.603, -0.675 0.551 -0.491, -0.752 0.551 -0.362, -0.804 0.551 -0.222, -0.831 0.551 -0.075, -0.831 0.551 0.075, -0.804 0.551 0.222, -0.752 0.551 0.362, -0.675 0.551 0.491, -0.577 0.551 0.603, -0.46 0.551 0.697, -0.328 0.551 0.767, -0.186 0.551 0.814, -0.037 0.551 0.834, 0.112 0.551 0.827, 0.258 0.551 0.794, 0.395 0.551 0.735, 0.52 0.551 0.652, 0.628 0.551 0.549, 0.716 0.551 0.428, 0.781 0.551 0.293, 0.821 0.551 0.149, 0.835 0.551 0.0, 0.769 0.623 -0.14, 0.732 0.623 -0.275, 0.671 0.623 -0.401, 0.589 0.623 -0.514, 0.487 0.623 -0.611, 0.37 0.623 -0.688, 0.242 0.623 -0.744, 0.105 0.623 -0.775, -0.035 0.623 -0.781, -0.174 0.623 -0.762, -0.307 0.623 -0.719, -0.431 0.623 -0.652, -0.54 0.623 -0.565, -0.633 0.623 -0.46, -0.704 0.623 -0.339, -0.754 0.623 -0.208, -0.779 0.623 -0.07, -0.779 0.623 0.07, -0.754 0.623 0.208, -0.704 0.623 0.339, -0.633 0.623 0.46, -0.54 0.623 0.565, -0.431 0.623 0.652, -0.307 0.623 0.719, -0.174 0.623 0.762, -0.035 0.623 0.781, 0.105 0.623 0.775, 0.242 0.623 0.744, 0.37 0.623 0.688, 0.487 0.623 0.611, 0.589 0.623 0.514, 0.671 0.623 0.401, 0.732 0.623 0.275, 0.769 0.623 0.14, 0.782 0.623 0.0, 0.711 0.691 -0.129, 0.677 0.691 -0.254, 0.62 0.691 -0.371, 0.544 0.691 -0.476, 0.451 0.691 -0.565, 0.343 0.691 -0.636, 0.223 0.691 -0.687, 0.097 0.691 -0.716, -0.032 0.691 -0.722, -0.161 0.691 -0.705, -0.284 0.691 -0.665, -0.398 0.691 -0.603, -0.499 0.691 -0.522, -0.585 0.691 -0.425, -0.651 0.691 -0.314, -0.697 0.691 -0.192, -0.72 0.691 -0.065, -0.72 0.691 0.065, -0.697 0.691 0.192, -0.651 0.691 0.314, -0.585 0.691 0.425, -0.499 0.691 0.522, -0.398 0.691 0.603, -0.284 0.691 0.665, -0.161 0.691 0.705, -0.032 0.691 0.722, 0.097 0.691 0.716, 0.223 0.691 0.687, 0.343 0.691 0.636, 0.451 0.691 0.565, 0.544 0.691 0.476, 0.62 0.691 0.371, 0.677 0.691 0.254, 0.711 0.691 0.129, 0.723 0.691 0.0, 0.647 0.753 -0.117, 0.616 0.753 -0.231, 0.565 0.753 -0.337, 0.495 0.753 -0.433, 0.41 0.753 -0.514, 0.312 0.753 -0.579, 0.203 0.753 -0.626, 0.088 0.753 -0.652, -0.03 0.753 -0.657, -0.146 0.753 -0.641, -0.259 0.753 -0.605, -0.362 0.753 -0.549, -0.455 0.753 -0.476, -0.532 0.753 -0.387, -0.593 0.753 -0.285, -0.634 0.753 -0.175, -0.655 0.753 -0.059, -0.655 0.753 0.059, -0.634 0.753 0.175, -0.593 0.753 0.285, -0.532 0.753 0.387, -0.455 0.753 0.476, -0.362 0.753 0.549, -0.259 0.753 0.605, -0.146 0.753 0.641, -0.03 0.753 0.657, 0.088 0.753 0.652, 0.203 0.753 0.626, 0.312 0.753 0.579, 0.41 0.753 0.514, 0.495 0.753 0.433, 0.565 0.753 0.337, 0.616 0.753 0.231, 0.647 0.753 0.117, 0.658 0.753 0.0, 0.578 0.809 -0.105, 0.55 0.809 -0.207, 0.505 0.809 -0.301, 0.443 0.809 -0.387, 0.366 0.809 -0.46, 0.279 0.809 -0.518, 0.182 0.809 -0.559, 0.079 0.809 -0.582, -0.026 0.809 -0.587, -0.131 0.809 -0.573, -0.231 0.809 -0.54, -0.324 0.809 -0.491, -0.406 0.809 -0.425, -0.476 0.809 -0.345, -0.53 0.809 -0.255, -0.567 0.809 -0.156, -0.585 0.809 -0.053, -0.585 0.809 0.053, -0.567 0.809 0.156, -0.53 0.809 0.255, -0.476 0.809 0.345, -0.406 0.809 0.425, -0.324 0.809 0.491, -0.231 0.809 0.54, -0.131 0.809 0.573, -0.026 0.809 0.587, 0.079 0.809 0.582, 0.182 0.809 0.559, 0.279 0.809 0.518, 0.366 0.809 0.46, 0.443 0.809 0.387, 0.505 0.809 0.301, 0.55 0.809 0.207, 0.578 0.809 0.105, 0.588 0.809 0.0, 0.505 0.858 -0.092, 0.48 0.858 -0.18, 0.44 0.858 -0.263, 0.386 0.858 -0.337, 0.32 0.858 -0.401, 0.243 0.858 -0.452, 0.158 0.858 -0.488, 0.069 0.858 -0.508, -0.023 0.858 -0.512, -0.114 0.858 -0.5, -0.202 0.858 -0.472, -0.283 0.858 -0.428, -0.354 0.858 -0.371, -0.415 0.858 -0.301, -0.462 0.858 -0.223, -0.494 0.858 -0.136, -0.511 0.858 -0.046, -0.511 0.858 0.046, -0.494 0.858 0.136, -0.462 0.858 0.223, -0.415 0.858 0.301, -0.354 0.858 0.371, -0.283 0.858 0.428, -0.202 0.858 0.472, -0.114 0.858 0.5, -0.023 0.858 0.512, 0.069 0.858 0.508, 0.158 0.858 0.488, 0.243 0.858 0.452, 0.32 0.858 0.401, 0.386 0.858 0.337, 0.44 0.858 0.263, 0.48 0.858 0.18, 0.505 0.858 0.092, 0.513 0.858 0.0, 0.427 0.901 -0.077, 0.406 0.901 -0.152, 0.372 0.901 -0.223, 0.327 0.901 -0.285, 0.271 0.901 -0.339, 0.206 0.901 -0.382, 0.134 0.901 -0.413, 0.058 0.901 -0.43, -0.019 0.901 -0.433, -0.097 0.901 -0.423, -0.171 0.901 -0.399, -0.239 0.901 -0.362, -0.3 0.901 -0.314, -0.351 0.901 -0.255, -0.391 0.901 -0.188, -0.418 0.901 -0.115, -0.432 0.901 -0.039, -0.432 0.901 0.039, -0.418 0.901 0.115, -0.391 0.901 0.188, -0.351 0.901 0.255, -0.3 0.901 0.314, -0.239 0.901 0.362, -0.171 0.901 0.399, -0.097 0.901 0.423, -0.019 0.901 0.433, 0.058 0.901 0.43, 0.134 0.901 0.413, 0.206 0.901 0.382, 0.271 0.901 0.339, 0.327 0.901 0.285, 0.372 0.901 0.223, 0.406 0.901 0.152, 0.427 0.901 0.077, 0.434 0.901 0.0, 0.346 0.936 -0.063, 0.329 0.936 -0.123, 0.302 0.936 -0.18, 0.265 0.936 -0.231, 0.219 0.936 -0.275, 0.167 0.936 -0.309, 0.109 0.936 -0.334, 0.047 0.936 -0.348, -0.016 0.936 -0.351, -0.078 0.936 -0.343, -0.138 0.936 -0.323, -0.194 0.936 -0.293, -0.243 0.936 -0.254, -0.284 0.936 -0.207, -0.317 0.936 -0.152, -0.339 0.936 -0.093, -0.35 0.936 -0.031, -0.35 0.936 0.031, -0.339 0.936 0.093, -0.317 0.936 0.152, -0.284 0.936 0.207, -0.243 0.936 0.254, -0.194 0.936 0.293, -0.138 0.936 0.323, -0.078 0.936 0.343, -0.016 0.936 0.351, 0.047 0.936 0.348, 0.109 0.936 0.334, 0.167 0.936 0.309, 0.219 0.936 0.275, 0.265 0.936 0.231, 0.302 0.936 0.18, 0.329 0.936 0.123, 0.346 0.936 0.063, 0.351 0.936 0.0, 0.262 0.964 -0.048, 0.249 0.964 -0.093, 0.228 0.964 -0.136, 0.2 0.964 -0.175, 0.166 0.964 -0.208, 0.126 0.964 -0.234, 0.082 0.964 -0.253, 0.036 0.964 -0.264, -0.012 0.964 -0.266, -0.059 0.964 -0.259, -0.105 0.964 -0.245, -0.147 0.964 -0.222, -0.184 0.964 -0.192, -0.215 0.964 -0.156, -0.24 0.964 -0.115, -0.256 0.964 -0.071, -0.265 0.964 -0.024, -0.265 0.964 0.024, -0.256 0.964 0.071, -0.24 0.964 0.115, -0.215 0.964 0.156, -0.184 0.964 0.192, -0.147 0.964 0.222, -0.105 0.964 0.245, -0.059 0.964 0.259, -0.012 0.964 0.266, 0.036 0.964 0.264, 0.082 0.964 0.253, 0.126 0.964 0.234, 0.166 0.964 0.208, 0.2 0.964 0.175, 0.228 0.964 0.136, 0.249 0.964 0.093, 0.262 0.964 0.048, 0.266 0.964 0.0, 0.176 0.984 -0.032, 0.167 0.984 -0.063, 0.153 0.984 -0.092, 0.134 0.984 -0.117, 0.111 0.984 -0.14, 0.085 0.984 -0.157, 0.055 0.984 -0.17, 0.024 0.984 -0.177, -0.0080 0.984 -0.178, -0.04 0.984 -0.174, -0.07 0.984 -0.164, -0.098 0.984 -0.149, -0.123 0.984 -0.129, -0.144 0.984 -0.105, -0.161 0.984 -0.077, -0.172 0.984 -0.048, -0.178 0.984 -0.016, -0.178 0.984 0.016, -0.172 0.984 0.048, -0.161 0.984 0.077, -0.144 0.984 0.105, -0.123 0.984 0.129, -0.098 0.984 0.149, -0.07 0.984 0.164, -0.04 0.984 0.174, -0.0080 0.984 0.178, 0.024 0.984 0.177, 0.055 0.984 0.17, 0.085 0.984 0.157, 0.111 0.984 0.14, 0.134 0.984 0.117, 0.153 0.984 0.092, 0.167 0.984 0.063, 0.176 0.984 0.032, 0.179 0.984 0.0, 0.088 0.996 -0.016, 0.084 0.996 -0.031, 0.077 0.996 -0.046, 0.068 0.996 -0.059, 0.056 0.996 -0.07, 0.042 0.996 -0.079, 0.028 0.996 -0.085, 0.012 0.996 -0.089, -0.0040 0.996 -0.09, -0.02 0.996 -0.087, -0.035 0.996 -0.082, -0.049 0.996 -0.075, -0.062 0.996 -0.065, -0.073 0.996 -0.053, -0.081 0.996 -0.039, -0.086 0.996 -0.024, -0.089 0.996 -0.0080, -0.089 0.996 0.0080, -0.086 0.996 0.024, -0.081 0.996 0.039, -0.073 0.996 0.053, -0.062 0.996 0.065, -0.049 0.996 0.075, -0.035 0.996 0.082, -0.02 0.996 0.087, -0.0040 0.996 0.09, 0.012 0.996 0.089, 0.028 0.996 0.085, 0.042 0.996 0.079, 0.056 0.996 0.07, 0.068 0.996 0.059, 0.077 0.996 0.046, 0.084 0.996 0.031, 0.088 0.996 0.016, 0.09 0.996 0.0, 0.0 -1.0 0.0, 0.0 1.0 0.0, "/>
+          </IndexedFaceSet>
+      </Shape>
+  </Switch>
+  <Group >
+      <Viewpoint  DEF="persp"  position="1.785144 -0.423756 2.587714" orientation="0.296767 -0.063927 0.952808  3.101776" description="persp" fieldOfView="0.950022"/>
+      <Transform  DEF="pPlane1"  translation="0.0 0.0 0.763744" scale="1.0 1.0 1.0" scaleOrientation="0.0 0.0 1.0  0.0" rotation="1.0 0.0 0.0  1.570796">
+          <Shape >
+              <Appearance >
+                  <Material  USE="lambert1_0"/>
+              </Appearance>
+              <IndexedFaceSet  USE="pPlane1_0Geo"/>
+          </Shape>
+      </Transform>
+      <Transform  DEF="pPlane2"  translation="0.0 0.0 -0.821597" scale="1.0 1.0 1.0" scaleOrientation="0.0 0.0 1.0  0.0" rotation="1.0 0.0 0.0  1.570796">
+          <Shape >
+              <Appearance >
+                  <Material  USE="lambert1_0"/>
+              </Appearance>
+              <IndexedFaceSet  USE="pPlane2_0Geo"/>
+          </Shape>
+      </Transform>
+      <Transform  DEF="pSphere1"  translation="-0.080367 0.001933 -0.386066" scale="0.138048 0.138048 0.138048" scaleOrientation="0.0 0.0 1.0  0.0" rotation="0.0 0.0 0.0  0.0">
+          <Shape >
+              <Appearance >
+                  <Material  USE="lambert1_0"/>
+              </Appearance>
+              <IndexedFaceSet  USE="pSphere1_0Geo"/>
+          </Shape>
+      </Transform>
+  </Group>
+  </Scene>
+
+</X3D>
Index: GTP/trunk/Lib/Vis/Preprocessing/data/artificial/simpleHoleViewCell.x3d
===================================================================
--- GTP/trunk/Lib/Vis/Preprocessing/data/artificial/simpleHoleViewCell.x3d	(revision 1563)
+++ GTP/trunk/Lib/Vis/Preprocessing/data/artificial/simpleHoleViewCell.x3d	(revision 1563)
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<X3D profile="Full">
+  <Scene>
+  <WorldInfo  info='"VRML2.0 created with Version 1.3, from Alias Maya 7.0"' title="simpleHoleViewCell"/>
+  <NavigationInfo  headlight="true" type='"EXAMINE" "ANY"' speed="1.0"/>
+  <Switch  whichChoice="-1">
+      <Shape >
+          <Appearance >
+              <Material  DEF="lambert1_0"  transparency="0.0" emissiveColor="0.0 0.0 0.0" shininess="0.0" diffuseColor="0.4 0.4 0.4" specularColor="0.0 0.0 0.0"/>
+          </Appearance>
+      </Shape>
+      <Shape >
+          <IndexedFaceSet  DEF="pCube1_0Geo"  convex="false" coordIndex=" 0 1 3 2 -1 2 3 5 4 -1 4 5 7 6 -1 6 7 1 0 -1 1 7 5 3 -1 6 0 2 4 -1" solid="false">
+              <Coordinate  DEF="pCube1GeoPoints"  point="-0.5 -0.5 0.5, 0.5 -0.5 0.5, -0.5 0.5 0.5, 0.5 0.5 0.5, -0.5 0.5 -0.5, 0.5 0.5 -0.5, -0.5 -0.5 -0.5, 0.5 -0.5 -0.5, "/>
+          </IndexedFaceSet>
+      </Shape>
+  </Switch>
+  <Group >
+      <Transform  DEF="pCube1"  translation="0.0 0.0 1.550802" scale="0.567759 0.567759 0.567759" scaleOrientation="0.0 0.0 1.0  0.0" rotation="0.0 0.0 0.0  0.0">
+          <Shape >
+              <Appearance >
+                  <Material  USE="lambert1_0"/>
+              </Appearance>
+              <IndexedFaceSet  USE="pCube1_0Geo"/>
+          </Shape>
+      </Transform>
+  </Group>
+  </Scene>
+
+</X3D>
