home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Computerspiele Selbermachen
/
computerspieleselbermachen.iso
/
arch
/
archtect.inc
next >
Wrap
Text File
|
1994-09-21
|
26KB
|
514 lines
// archtect.inc
// POV-Ray 2.0 include file
// Simple architectural, crystal & related shapes
// Michael G. Wilkins 9/1994.
//------------------------ARCHITECTURAL SHAPES------------------------------
/* Objects declared (some components also declared):
Column6 - 6-fluted simple column diameter 2
Column8 - 8-fluted simple column diameter 2
SimplePlinth - simple box plinth proportioned
for diameter 2 columns
DoricCol - 20-flute Doric column diameter 2
IonicCol - 10-flute Ionic column diameter 2
Hex - basic hexagon, centered on origin in XZ plane,
unit sides, height Y = 0.0 to 1.0. Use for
flagstones, etc. Grout cutback included (place
over a Gray30 surface, etc).
HexCorner - piece of hexagon for corners of hexagonal
tesselations.
DoricPlinth - Doric column plinth for diameter 2 column
DoricPlinthA - simple plinth for diameter 2 column
DoricPlinthH - hexagonal-based Doric plinth
DoricCap - Doric column capital for diameter 2 column
DoricCapH - Doric column capital with hexagonal top
IonicPlinth - Ionic column plinth for diameter 2 column
IonicCap - Ionic column capital for diameter 2 column
(not yet implemented)
Bric - basic buiding block with all edges chamfered
for shadows in joints in walls. 1 x 1 in
YZ plane, 0.0 to tau in X.
HalfBrick - half the above, in length.
EllArch - elliptic arch, from -12. to 12. in X, height
from Y = 0. to 12./tau, in XY plane. Thickness
is approx 1. in XY and YZ planes.
REMARKS
Column objects oriented along Y axis, from -1 to +1, with unit
radius (or equivalent). Details of Doric & Ionic are from "The Modern
Builder's Guide", M. Lafever, pub. by Dover NY 1969, being a reprint of the
original 1833 edition, and are typical of American Greek Revival construction
from the last century, rather than the original pure Greek, even though there
are details of 'original' Greek structures. For large classical columns, the
columns should really be cones, the upper diameter being about 1/6th less
than the lower. Further, the larger Egyptian columns had a height to
diameter ratio of about 4.5; the Athenians pushed this to about 5 or so, the
Romans up to a ratio of 7 or so. The Povians can use any ratio!
For high-resolution or closeup views, turn on the 'sturm' keyword in
all torus objects, use the +A and Q9 switches.
WARNING: be careful scaling plinths, capitals and archs. You cannot
scale these in Z as much as in X and Y, or you lose the proportions. Scale
and place the plinths and capitals first, then scale the columns to the
required height. Note that my proportions are loosely based on tau, the
Golden Mean, as are a lot of classical Greek proportions.
Feel free to modify, add to, and elaborate, just please send me a
copy of your efforts, and any images that incorporate these objects, or
modifications thereof. The classic Corinthian capital is going to be rather
difficult, as are some of the ornamentations for architraves and friezes,
etc - laurel leaves, medallions, rosettes, etc. Moray, PovCAD or a similar
wireframe modeller is probably the way to go.
I can be reached on:
Compuserve: [73042,1022], often on the GRAPHDEV Forum.
Internet: wilkins@bootes.unm.edu (a Bitnet address).
//------------------------------CRYSTAL SHAPES------------------------------
Hexagon_Y ;hexagonal prism, 2 flat caps
Hexagon_Y_TopCap ; hex prism, 1 pointed top cap
Hexagon_Y_Point; hex prism with top pointed cap
Prism_Y ;prism, 2 flat caps
Prism_TopCap ;top pointed cap for triangular prism
Prism_Y_Point, prism with 1 pointed cap
Octagon_Y ;octagonal prism, 2 flat caps
Octagon_TopCap ;pointed top cap for octagon prism
Octagon_Y_Point; octagonal prism with pointed end
REMARKS.
Base of all objects is at y=-1, all oriented up +y axis, with a
flat end. Other end shapes can be made by slicing with a plane at an angle,
etc.
Scale prism and cap separately in Y before applying cap, to preserve
the desired end proportions. Scale cap and prism together in X & Z.
Please see ARCHIMED.INC by Grant Hutchinson [100047,144], available
on the CIS GRAPHDEV forum. This is a very nice collection of the Archimedean
solids.
For those who want to do more here, a brief note. There are 75
uniform polyhedra (regular faces and congruent vertices, including star
polygons), as well as two infinite families of prisms and antiprisms. These
have been generated and raytraced by Maeder, see The Mathematica Journal,
Vol 4, #2, Spring 1994. A Mathematica package is available for enumerating
these uniform polyhedra; (the same issue also has an article on nonperiodic
plane tilings). There is also a Mathematica package by Maeder for
enumerating all the 59 stellations of the icosahedron. Lots of interesting
strange shapes for POV-people!
*/
#include "shapes.inc"
#include "colors.inc"
#include "textures.inc"
#include "fov.inc"
#declare pi = 3.14159
#declare tau = 1.61803 //Golden mean
#declare nu = 137.5 //Fibonacci angle, 360/tau^2
#declare Column = cylinder { <0.,-1.,0.>, <0.,1.,0.>, 1. } //2 dia
//-----------------------SIMPLE FLUTED COLUMNS----------------------------
//For a 6-flute column, your stone chisel
#declare Flute6 = cylinder { <0.,-1.,0.>, <0.,1.,0.>, pi/12.
translate <0.,0.,-1.> }
// and for a 8-flute column
#declare Flute8 = cylinder { <0.,-1.,0.>, <0.,1.,0.>, pi/16.
translate <0.,0.,-1.> }
//
#declare BaseCol61 = object {
union {
object { Column }
object { Flute6 }
object { Flute6 rotate y*60 }
object { Flute6 rotate y*120 }
object { Flute6 rotate y*180 }
object { Flute6 rotate y*240 }
object { Flute6 rotate y*300 }
}
}
#declare Column6 = object {
difference {
object { BaseCol61 }
object { Flute6 rotate y*30 }
object { Flute6 rotate y*90 }
object { Flute6 rotate y*150 }
object { Flute6 rotate y*210 }
object { Flute6 rotate y*270 }
object { Flute6 rotate y*330 }
}
bounded_by { box { <-1.27, -1.1, -1.27>, < 1.27, 1.1, 1.27> } }
}
#declare BaseCol81 = object {
union {
object { Column }
object { Flute8 }
object { Flute8 rotate y*45 }
object { Flute8 rotate y*90 }
object { Flute8 rotate y*135 }
object { Flute8 rotate y*180 }
object { Flute8 rotate y*225 }
object { Flute8 rotate y*270 }
object { Flute8 rotate y*315 }
}
}
#declare Column8 = object {
difference {
object { BaseCol81 }
object { Flute8 rotate y*22.5 }
object { Flute8 rotate y*67.5 }
object { Flute8 rotate y*112.5 }
object { Flute8 rotate y*157.5 }
object { Flute8 rotate y*202.5 }
object { Flute8 rotate y*247.5 }
object { Flute8 rotate y*292.5 }
object { Flute8 rotate y*337.5 }
}
bounded_by { box { <-1.21, -1.1, -1.21>, < 1.21,