/* POVRAY PROGRAM TO CREATE THE ELLIPSOIDS VERSION OF THE UNIVERSAL TERRESTRIAL DWELLING By ROBERT JOHN MORTON YE572246C COMMAND LINE: povray -visual DirectColor ellipsoid.pov +W640 +H480 set width and height of picture in /etc/povray/3.6/povray.ini */ #include "colors.inc" #include "shapes.inc" #include "textures.inc" #include "metals.inc" #include "stones.inc" #include "glass.inc" // CAMERA ---------------------------------------------------------------- global_settings { max_trace_level 256 } // max possible is 256 #declare r = 1.5; #declare h = 300; #declare l = h * r; #declare q = 150; camera { // establish a camera to view the scene location <0, h, l> look_at <0, -0.5, 0> // camera is looking at a point a little to the right and in front of the origin angle 1 // the aperture angle. This affects the zooming of the scene. } // LIGHTING -------------------------------------------------------------- // 1) Simulate the sun light_source { // cylinder light <200, 1000, 800> // located quite high, well forward and a little to the left color White // white light cylinder // confined to a cylindrical beam radius 70 // of radius 30 units diameter at full intensity falloff 200 // falling off to zero brightness at 70 units diameter area_light <1, 0, 0>, <0, 0, 1>, 20, 20 // lighting element is a 20 x 20 arral of pixels adaptive 1 // the normal of which is determined by the vectors jitter // adaptive = minimise number of test rays required point_at <0, 0, 0> // the light beam is aimed at the co-ordinate origin } // jitter softens shadows light_source { // cylinder light <200, 1000, 800> // located quite high, well forward and a little to the left color rgb <.8,.7,.6> // white light cylinder // confined to a cylindrical beam radius 70 // of radius 30 units diameter at full intensity falloff 200 // falling off to zero brightness at 70 units diameter area_light <1, 0, 0>, <0, 0, 1>, 20, 20 // lighting element is a 20 x 20 arral of pixels adaptive 1 // the normal of which is determined by the vectors jitter // adaptive = minimise number of test rays required point_at <0, 0, 0> // the light beam is aimed at the co-ordinate origin } // jitter softens shadows // 2) simulate light from the horizon light_source { < 0, 50, 500> color rgb <.6, .8, 1> } // ordinary point source of horizon light light_source { < 433, 50, -250> color rgb <.6, .8, 1> } // ordinary point source of horizon light light_source { <-433, 50, -250> color rgb <.6, .8, 1> } // ordinary point source of horizon light // BACKGROUND ------------------------------------------------------------ #declare LandArea = texture { pigment { agate turbulence 1 lambda 1.5 omega .8 octaves 8 color_map { [0.00 color rgb <.5, .25, .15>] [0.33 color rgb <.1, .5, .4>] [0.86 color rgb <.6, .3, .1>] [1.00 color rgb <.5, .25, .15>] } } } plane { y, -4 // create a ground plane texture { // define its texture that comprises: pigment { color rgb <0.8, 1.0, 0.5> // colour field-green rgb <0.8, 1.0, 0.5> } finish { // with surface characteristics: diffuse 0.2 // diffusion ambient 0.3 // effective ambient lighting (brightness) } } } sky_sphere { pigment { gradient y color_map { [(1-cos(radians( 30)))/2 color White] [(1-cos(radians(120)))/2 color Blue] } scale 2 translate -1 } } /* This is a new version of the ellipsoid with a single skin plus ellipical flanges #declare p = 0.7; // major colour level #declare q = 0.5; // minor colour level #declare s = 0.3; // lower intermediate colour #declare w = 0.6; // higher intermediate colour #declare h = 0.4; // 'absent' component #declare RED = texture { pigment { agate agate_turb 0.5 color_map { [0.00 color
] // red
[s color ] // red
}
}
finish { phong 0.8 }
}
#declare GREEN = texture {
pigment {
agate
agate_turb 0.5
color_map {
[0.00 color ] // cyan
[w color
] // yellow
[1.00 color
] // green
[s color
]
[1.00 color
] // green
}
}
finish { phong 0.8 }
}
#declare BLUE = texture {
pigment {
agate
agate_turb 0.5
color_map {
[0.00 color
] // blue
[s color
]
[1.00 color
] // blue
}
}
finish { phong 0.8 }
} */
/* SPECIAL TEXTURES USED IN THIS PROJECT ----------------------------------------------------------
Shell Deep Magenta 0.53, 0.40, 0.80
Shell Light Magenta 0.53, 0.47, 0.80 (magentaish grey)
Shell Light Green 0.53, 0.80, 0.47 (yellowish grey)
Shell Light Pink 0.80, 0.53, 0.47
Shell Light Brown 0.80, 0.47, 0.53
*/
#declare GREEN = texture {
pigment { color rgb <0.50, 0.52, 0.49> } // grey with a suggestion of light green
finish { phong 0.8 ambient 0.5 }
}
#declare RED = texture {
pigment { color rgb <0.57, 0.55, 0.53> } // grey with a hint of red
finish { phong 0.8 ambient 0.5 }
}
#declare YELLOW = texture {
pigment { color rgb <0.90, 0.86, 0.32> } // crop corn colour
finish { phong 0.8 ambient 0.4 }
}
#declare CYAN = texture {
pigment { color rgb <0.58, 0.55, 0.30> } // crop ploughed colour
finish { phong 0.8 ambient 0.4 }
}
#declare ROAD = texture {
pigment { colour rgb <0.52, 0.49, 0.50> } // light grey tarmac.
finish { phong 0.8 ambient 0.4 }
}
#declare BLUE = texture {
pigment { color rgb <0.38671875, 0.625, 0.73828125> } // water blue
finish { diffuse 0.3 ambient 0.3 phong .95 }
}
#declare GLASS1 = texture {
pigment { color Col_Glass_General }
finish { F_Glass8 }
}
#declare GLASS2 = texture {
pigment { color Col_Glass_Green }
finish { F_Glass8 }
}
// OBJECTS -------------------- Dimensions in Metres -------------------------
#declare pf = 2.5; // radius of petal floor 2.5
#declare pr = 3.5; // horizontal radius of the petal ellipsoids
#declare ar = 0.5; // aspect ratio of the ellipse
#declare vp = pr * ar; // vertical half-height of petal ellipsoid
#declare dm = RED; // dark metal: surface texture of the ninho de amor
#declare lm = BLUE; // light metal:
#declare iw = RED; // colour and texture for interior walls
#declare gl = T_Glass4; // type of glass used for windows
#declare s = 1.4433756729740644112728719512549; //half-side of the hexagon
/* CREATE THE FLANGES FOR THE EDGES OF THE ELLIPTICAL CUT-OUTS
The union below is of two thin co-axial cylindrical flanges 2 mm apart and each 4 mm thick.
The 2 mm separation is for a joining gasket of fibre or cork. The third cylinder is used
to cut out the centre to form a thin flange. The whole object is then squashed to half its
size in the y-dimension only. This makes the flange 10 cm wide on the major (horizontal)
axis, reducing to 5 cm wide on the minor (vertical) axis. */
#declare flange0 = difference { // 10 cm x 7 m DIAMETER ELLIPTICAL FLANGE
union {
cylinder { // main flange
<0, 0, -.005>, <0, 0, -.001>, 3.5 // by first making a 5 metre diameter cylinder
}
cylinder { // mating flange
<0, 0, +.001>, <0, 0, +.005>, 3.5 // by first making a 5 metre diameter cylinder
}
}
cylinder {
<0, 0, -.006>, <0, 0, +.006>, 3.3 // by first making a 5 metre diameter cylinder
pigment { color rgbt<1,1,1,1> } // make it completely transparent
}
box {
<-1, -4, -.006>, <+1, +4, +.006>
pigment { color rgbt<1,1,1,1> } // make it completely transparent
}
}
#declare flange1 = difference { // 10 cm X 4 m ELLIPTICAL FLANGE
union {
cylinder { // main flange
<0, 0, -.005>, <0, 0, -.001>, 2.45 // by first making a 5 metre diameter cylinder
}
cylinder { // mating flange
<0, 0, +.001>, <0, 0, +.005>, 2.45 // by first making a 5 metre diameter cylinder
}
}
cylinder {
<0, 0, -.006>, <0, 0, +.006>, 2.25 // ???by first making a 5 metre diameter cylinder
pigment { color rgbt<1,1,1,1> } // make it completely transparent
}
translate <0,0,pf> // move the flange to its radial position
}
#declare flange2 = union {
difference {
cylinder { // main flange
<0, 0, 0>, <0, -.2, 0>, 2.206 // by first making a 5 metre diameter cylinder
hollow
}
cylinder { // mating flange
<0, .001, 0>, <0, -.201, 0>, 2.202 // by first making a 5 metre diameter cylinder
pigment { color rgbt<1,1,1,1> } // make it completely transparent
hollow
}
}
difference {
cylinder { // main flange
<0, 0, 0>, <0, -.2, 0>, 2.198 // by first making a 5 metre diameter cylinder
hollow
}
cylinder { // mating flange
<0, .001, 0>, <0, -.201, 0>, 2.194 // by first making a 5 metre diameter cylinder
pigment { color rgbt<1,1,1,1> } // make it completely transparent
hollow
}
}
translate <0, 2.7221315177632398883866023128624, 0> //translate to touch ellipse
}
#declare flange3 = union {
difference {
cylinder { // main flange
<0, 0, 0>, <0, -.2, 0>, 1.006 // by first making a 5 metre diameter cylinder
hollow
}
cylinder { // mating flange
<0, .001, 0>, <0, -.201, 0>, 1.002 // by first making a 5 metre diameter cylinder
pigment { color rgbt<1,1,1,1> } // make it completely transparent
}
}
difference {
cylinder { // main flange
<0, 0, 0>, <0, -.2, 0>, 0.998 // by first making a 5 metre diameter cylinder
hollow
}
cylinder { // mating flange
<0, .001, 0>, <0, -.201, 0>, 0.994 // by first making a 5 metre diameter cylinder
pigment { color rgbt<1,1,1,1> } // make it completely transparent
}
}
translate <0, 3.3541019662496845446137605030969, 0> //translate to touch ellipse
}
#declare flange4 = difference {
cylinder { // main flange
<0, 0, 0>, <0, -.1, 0>, 0.506 // by first making a 5 metre diameter cylinder
hollow
}
cylinder { // mating flange
<0, .001, 0>, <0, -.1005, 0>, 0.502 // by first making a 5 metre diameter cylinder
pigment { color rgbt<1,1,1,1> } // make it completely transparent
}
translate <0, 1.7320508075688772935274463415055, 0> //translate to touch ellipse
}
// CREATE THE BASIC ELLIPSOID
#declare a = union { // CREATE BASIC ELLIPSOID SHAPE FOR ACCOMMODATION MODULES
sphere { <0,0,0>, pr hollow } // outer surface
object { flange2 } // outer circle of the roof
object { flange3 } // inner circle of the roof round skylight
#declare k = 0;
#while(k<360) // small elliptical flanges marking the hexagon
object { flange1 rotate <0,k,0> }
#declare k=k+60;
#end
#declare k = 30;
#while(k<=180) // large elliptical flanges of longitude
object { flange0 rotate <0,k,0> }
#declare k=k+60;
#end
scale <1, ar, 1> // squash it vertically to creat ellipsoid
}
// CREATE A TRANSPARENT GENERIC PETAL TO ILLUSTRATE THE FLANGING
#declare b = union {
object { flange2 } // outer circle of the roof
object { flange3 } // inner circle of the roof round skylight
#declare k = 0;
#while(k<360) // small elliptical flanges marking the hexagon
object { flange1 rotate <0,k,0> }
#declare k=k+60;
#end
#declare k = 30;
#while(k<=180) // large elliptical flanges of longitude
object { flange0 rotate <0,k,0> }
#declare k=k+60;
#end
texture { lm } // giving it the texture of light metal
}
#declare fs = union { // CREATE FLANGING STRUCTURE
sphere { // outer surface
<0,0,0>, pr
hollow
texture { gl }
}
object { b }
scale <1, ar, 1> // squash it vertically to creat ellipsoid
}
// ------------------------------ CUTTING UP THE PETAL UNIT ---------------------------------
// THE VERTICAL (OR PERIPHERAL) PANELS
#declare hs = object { // HEXAGONAL SLICE
a
clipped_by { box { <-4,-2, -2.5>, < 4, 2, -7.5> } }
}
#declare cpgl = object { // CORNER PANEL
hs
rotate < 0, 60, 0> // correct!
clipped_by { box { <-4,-2, -2.5>, < 4, 2, -7.5> } }
texture { gl }
// rotate<0,-30,0> //explode
// translate<0,0,-1.25> //explode
// rotate<0, 30,0> //explode
}
#declare sp = object { // SIDE PANEL
hs
rotate < 0, 60, 0>
clipped_by { box { <-4,-2, 7.5>, < 4, 2, -2.5> } }
rotate < 0, -120, 0>
clipped_by { box { <-4,-2, 7.5>, < 4, 2, -2.5> } }
rotate <0,60,0>
clipped_by { box { <0,-3,-4>, <-3, +3, +4> } }
// translate<-.125,0,-1.25> //explode
}
#declare dsp = union { // right-handed double side-panel
object { sp texture { lm } }
object { sp texture { dm } rotate <180, 180, 0> }
}
// THE HORIZONTAL (OR ROOF/BASE) PANELS
#declare rp = object { // ROOF PANEL (CIRCULAR SEGMENT)
difference {
object {
a
clipped_by { cylinder { <0, 0, 0>, <0, 4, 0>, 2.2 } }
}
cylinder {
<0,0,0>, <0,4,0>, 1
pigment { color rgbt<1,1,1,1> } // make it completely transparent
}
}
clipped_by { box { <0,-4,-4>, <4, 4, 4> } }
rotate <0, 120, 0>
clipped_by { box { <0,-4,-4>, <4, 4, 4> } }
// rotate<0,30,0> //explode
// translate<0,0,-.5> //explode
// rotate<0,-30,0> //explode
}
#declare rplm = object {
rp
texture { lm } // giving it the texture of light metal
}
#declare rpdm = object {
rp
texture { dm } // giving it the texture of dark metal
}
// THE FRAME PANEL (HEX ON OUTER EDGE, CIRCULAR ON INNER EDGE
#declare fp = object {
difference {
object {
a
clipped_by { box { <-4, 0, -2.5>, <+4, 4, +2.5> } }
rotate <0,60,0>
clipped_by { box { <-4, 0, -2.5>, <+4, 4, +2.5> } }
}
cylinder {
<0, -3, 0>, <0, 3, 0>, 2.2
pigment { color rgbt<1,1,1,1> }
}
}
clipped_by { box { <0,0,-4>, <4,3,4> } }
rotate <0,-60,0>
clipped_by { box { <-4,0,-4>, <0,3,4> } }
// rotate<0,30,0> //explode
// translate<0,0,1> //explode
// rotate<0,-30,0> //explode
}
#declare fplm = object {
fp
texture { lm } // giving it the texture of light metal
}
#declare fpdm = object {
fp
texture { dm } // giving it the texture of dark metal
}
#declare tb = object { // CREATE THE TOP/BOTTOM PANEL OBJECT (SKYLIGHT)
a // complete ellipsoidal object
clipped_by { // clipped by a 2 metre diameter cylinder
cylinder { <0, 1.577>, <0, 1.751, 0>, 1 }
}
// finish { phong 1 } // and a strong reflective shine
}
#declare tbgl = object {
tb
texture { gl } // giving it the texture of glass
}
#declare tb1 = difference {
union {
object { tb }
object { flange4 }
}
cylinder {
<0,0,0>, <0,4,0>, 0.5
pigment { color rgbt<1,1,1,1> } // make it completely transparent
}
}
#declare tblm = object {
tb1
texture { lm } // giving it the texture of light metal
}
// ------------------------- END OF PANEL CREATION SECTION -------------------------------
// CONSTRUCT THE FLOOR SECTION
#declare floor1 = cylinder {
<0, 0, 0>, // top centre point
<0, -.15, 0>, // base centre point
2.5 // radius of the floor
texture { GREEN } // giving it the desired surface texture
finish {phong 1}
translate <0, -1, 0> // shift it vertically to the floor level of the ellipsoid
}
// CONSTRUCT THE 'HALF-SECTION' OF AN INTER-MODULE FOOTBRIDGE
#declare bridge = box {
<0, .01, .75>,
<-2.5, -.01, -.75>
texture { GREEN }
finish {phong 1}
translate <-2.5, -1, 0> // move to to the correct floor level
}
// CONSTRUCT THE STAIRCASE AND SUPPORT CYLINDERS
#declare stairs = cylinder {
<0, -4, 0>, <0, -.99, 0>, 1 hollow
texture { gl } // giving it the desired surface texture
finish { phong 0.5 } // and no shine
}
#declare post = union {
cylinder { <0, -4, 0>, <0, -1.01, 0>, .5 hollow }
cylinder { <0, -4, 0>, <0, -1.01, 0>, .45 }
texture { gl } // giving it the desired surface texture
finish { phong 0.5 } // and no shine
}
// -------------------------- FORM THE INTERIOR WALL STRUCTURE --------------------------------
#declare d = difference { // FORM THE BASIC ELLIPTICAL WALL PANEL
cylinder {
<0, 0, -.006>, <0, 0, -.010>, 2.45 // by first making a 4.9 metre diameter cylinder
scale <1, ar, 1> // then squash it to give it a 2:1 elliptical cross-section
}
box {
<-.5, -1.15, -.005>, <+.5, .85, -.011> // merge in a clear door way 2 metres high by 1 metre wide
pigment { color rgbt<1,1,1,1> } // make it completely transparent
}
}
#declare hx = 1.4433756729740644112728719512549; // half-length of hexagon
#declare rh = 2.8867513459481288225457439025098; // radial hipotenuse
#declare sd = rh + hx; // dist. from centre to mid-point of radial unit
#declare dd = union {
object {
d
clipped_by { box { <0, -1.5, -1>, <+hx, +1.5, +1> } }
texture { dm } // give it the desired solid surface texture
// translate<+.1,0,0> //explode
}
object {
d
clipped_by { box { <0, -1.5, -1>, <-hx, +1.5, +1> } }
texture { lm } // give it the desired solid surface texture
// translate<-.1,0,0> //explode
}
finish { phong .3 } // make its surface shiny
}
#declare explode = 0; // 0.75;
#declare d0 = object {
dd
translate <0, 0, pf+explode>
}
#declare d1 = object {
dd
rotate <0, 180, 0>
translate <0, 0, pf+explode>
}
#declare d2 = object { // form right-handed end-piece wall unit
d
clipped_by { box {