/*
 ************************************************************************
 *  
 * Java 3D configuration file for 3 screens.  Left and right screens are
 * rotated 45 degrees from the center screen.
 *  
 ************************************************************************
 */

// Create new screen objects and associate them with logical names and numbers.
// These numbers are used as indices to retrieve the AWT GraphicsDevice from
// the array that GraphicsEnvironment.getScreenDevices() returns.
// 
// NOTE: The GraphicsDevice order in the array is specific to the local
// site and display system.
// 
(NewScreen left   0)
(NewScreen center 1)
(NewScreen right  2)

// Set the available image areas for full screens.  
// 
(ScreenProperty left   PhysicalScreenWidth  0.360)
(ScreenProperty left   PhysicalScreenHeight 0.288)

(ScreenProperty center PhysicalScreenWidth  0.360)
(ScreenProperty center PhysicalScreenHeight 0.288)

(ScreenProperty right  PhysicalScreenWidth  0.360)
(ScreenProperty right  PhysicalScreenHeight 0.288)

// Specify full screen windows.
// 
(ScreenProperty left   WindowSize NoBorderFullScreen)
(ScreenProperty center WindowSize NoBorderFullScreen)
(ScreenProperty right  WindowSize NoBorderFullScreen)

// Set the TrackerBaseToImagePlate transforms for these screens.
// 
// The tracker base and center of coexistence are set here to the middle of the
// center screen. The basis vectors are aligned with the center screen image
// plate.  The left and right screens are rotated 45 degrees toward each other
// about their shared edges with the center screen.
//
(ScreenProperty center TrackerBaseToImagePlate
                        (Translate 0.180000    0.144000 0.000000))

// cos(45) * 0.360 * 0.5 = 0.127279; 0.360 + 0.127279 = 0.487279
(ScreenProperty left  TrackerBaseToImagePlate
                       (RotateTranslate
		        (Rotate     0.000000 -45.000000 0.000000)
                        (Translate  0.487279   0.144000 0.127279)))

// cos(45) * 0.360 * 0.5 = 0.127279
(ScreenProperty right TrackerBaseToImagePlate
                       (RotateTranslate
		        (Rotate     0.000000  45.000000 0.000000)
                        (Translate -0.127279   0.144000 0.127279)))

// Create a view using the defined screens.
// 
(NewView      view0)
(ViewProperty view0 Screen left)
(ViewProperty view0 Screen center)
(ViewProperty view0 Screen right)
(ViewProperty view0 CenterEyeInCoexistence (0.0 0.0 0.5))