/* PovRay model of the VCV, modify this to change the frame/structural appearance The walls are labelled by WHICHWALL Draw the glass or not with DRAWGLASS All units in mm */ #include "metals.inc" #declare RTOD = 57.2957795; #declare DTOR = 0.0174532925; #declare TWOPI = 6.283185307179586476925287; #declare TUBERADIUS = 50; #declare WALLTHICKNESS = 10; #declare RADIUS1 = 3000; #declare RADIUS2 = RADIUS1 / cos(22.5*DTOR); #declare WALLHEIGHT = 2200; #declare SCREENWIDTH = 2200; #declare TOPOFFSET = 142.5; #declare DIST1 = RADIUS2 * sin(22.5*DTOR); #declare DIST2 = DIST1 + (RADIUS1 - DIST1) / 2; #declare SCREENCENTER = (2*WALLHEIGHT-2*TOPOFFSET-SCREENWIDTH*3/4)/2; #declare DRAWGLASS = 0; #declare frametexture = texture { pigment { color rgb <0.4,0.4,0.7> } finish { F_MetalC } } #declare walltexture = texture { pigment { color rgb <0.3,0.3,0.4> } } #declare ceilingtexture = texture { pigment { color rgb <0.5,0.5,0.7> } } #declare windowtexture = texture { pigment { color rgb <0.4,0.4,0.4> } } /* 4 ----- 5 / \ 3 / \ | | 6 | o--> | 2 | | x | \ y| / 7 \ / 1 ----- 0 */ #declare FRAMEPIECE = object { union { /* Top rail */ cylinder { <-DIST1,0,WALLHEIGHT>, , TUBERADIUS texture { frametexture } } /* Left leg */ cylinder { <-DIST1,0,WALLHEIGHT>, <-DIST1,0,0>, TUBERADIUS texture { frametexture } } /* Capping sphere */ sphere { <-DIST1,0,WALLHEIGHT>, TUBERADIUS texture { frametexture } } difference { box { <-DIST1+TUBERADIUS,-WALLTHICKNESS/2,0>, < DIST1-TUBERADIUS, WALLTHICKNESS/2,WALLHEIGHT-TUBERADIUS> texture { walltexture } } box { <-SCREENWIDTH/2,-WALLTHICKNESS,WALLHEIGHT-TOPOFFSET>, < SCREENWIDTH/2, WALLTHICKNESS,WALLHEIGHT-TOPOFFSET-SCREENWIDTH*3/4> texture { walltexture } } } /* Ceiling - flat polygon { 4, <0,-RADIUS1,WALLHEIGHT>, <-DIST1,0,WALLHEIGHT>, < DIST1,0,WALLHEIGHT>, <0,-RADIUS1,WALLHEIGHT> texture { ceilingtexture } } */ /* Ceiling - raised center */ polygon { 4, <0,-RADIUS1,WALLHEIGHT+2000>, <-DIST1,0,WALLHEIGHT>, < DIST1,0,WALLHEIGHT>, <0,-RADIUS1,WALLHEIGHT+2000> texture { ceilingtexture } } } } /* 4 */ union { object { FRAMEPIECE } #if (WHICHWALL != 4) #if (DRAWGLASS = 0) box { <-SCREENWIDTH/2,-WALLTHICKNESS/4,WALLHEIGHT-TOPOFFSET>, < SCREENWIDTH/2, WALLTHICKNESS/4,WALLHEIGHT-TOPOFFSET-SCREENWIDTH*3/4> texture { windowtexture } } #end #end translate <0,RADIUS1,0> rotate <-90,0,0> } /* 3 */ union { object { FRAMEPIECE } #if (WHICHWALL != 3) #if (DRAWGLASS = 0) box { <-SCREENWIDTH/2,-WALLTHICKNESS/4,WALLHEIGHT-TOPOFFSET>, < SCREENWIDTH/2, WALLTHICKNESS/4,WALLHEIGHT-TOPOFFSET-SCREENWIDTH*3/4> texture { windowtexture } } #end #end rotate <0,0,315> translate rotate <-90,0,0> } /* 2 */ union { object { FRAMEPIECE } #if (WHICHWALL != 2) #if (DRAWGLASS = 0) box { <-SCREENWIDTH/2,-WALLTHICKNESS/4,WALLHEIGHT-TOPOFFSET>, < SCREENWIDTH/2, WALLTHICKNESS/4,WALLHEIGHT-TOPOFFSET-SCREENWIDTH*3/4> texture { windowtexture } } #end #end rotate <0,0,270> translate rotate <-90,0,0> } /* 1 */ union { object { FRAMEPIECE } #if (WHICHWALL != 1) #if (DRAWGLASS = 0) box { <-SCREENWIDTH/2,-WALLTHICKNESS/4,WALLHEIGHT-TOPOFFSET>, < SCREENWIDTH/2, WALLTHICKNESS/4,WALLHEIGHT-TOPOFFSET-SCREENWIDTH*3/4> texture { windowtexture } } #end #end rotate <0,0,225> translate rotate <-90,0,0> } /* 0 */ union { object { FRAMEPIECE } #if (WHICHWALL != 0) #if (DRAWGLASS = 0) box { <-SCREENWIDTH/2,-WALLTHICKNESS/4,WALLHEIGHT-TOPOFFSET>, < SCREENWIDTH/2, WALLTHICKNESS/4,WALLHEIGHT-TOPOFFSET-SCREENWIDTH*3/4> texture { windowtexture } } #end #end rotate <0,0,180> translate <0,-RADIUS1,0> rotate <-90,0,0> } /* 7 */ union { object { FRAMEPIECE } #if (WHICHWALL != 7) #if (DRAWGLASS = 0) box { <-SCREENWIDTH/2,-WALLTHICKNESS/4,WALLHEIGHT-TOPOFFSET>, < SCREENWIDTH/2, WALLTHICKNESS/4,WALLHEIGHT-TOPOFFSET-SCREENWIDTH*3/4> texture { windowtexture } } #end #end rotate <0,0,135> translate <-DIST2,-DIST2,0> rotate <-90,0,0> } /* 6 */ union { object { FRAMEPIECE } #if (WHICHWALL != 6) #if (DRAWGLASS = 0) box { <-SCREENWIDTH/2,-WALLTHICKNESS/4,WALLHEIGHT-TOPOFFSET>, < SCREENWIDTH/2, WALLTHICKNESS/4,WALLHEIGHT-TOPOFFSET-SCREENWIDTH*3/4> texture { windowtexture } } #end #end rotate <0,0,90> translate <-RADIUS1,0,0> rotate <-90,0,0> } /* 5 */ union { object { FRAMEPIECE } #if (WHICHWALL != 5) #if (DRAWGLASS = 0) box { <-SCREENWIDTH/2,-WALLTHICKNESS/4,WALLHEIGHT-TOPOFFSET>, < SCREENWIDTH/2, WALLTHICKNESS/4,WALLHEIGHT-TOPOFFSET-SCREENWIDTH*3/4> texture { windowtexture } } #end #end rotate <0,0,45> translate <-DIST2,DIST2,0> rotate <-90,0,0> }