POV-Ray : Newsgroups : povray.general : Fitting a gothic trefoil into an equilateral triangle : Re: Fitting a gothic trefoil into an equilateral triangle Server Time
4 Aug 2024 14:28:23 EDT (-0400)
  Re: Fitting a gothic trefoil into an equilateral triangle  
From:
Date: 6 Jul 2003 22:37:10
Message: <3f08dcd6$1@news.povray.org>
/*
Hi Mark,

did you recognize that the picture of your link has only a small number
of *different* elements? The rest is repetition: a task for POV-Ray's
#while-statement.

> I have thus far a floor, columns & footings, empty windows waiting for
> inspired "glass" (maybe just borrowed images converted to a format that
> will allow me to play with the transparency/translucency).  I also have the
> nave ceiling ribbing and vaulting, piers at the 'crossing', a west wall &
> portal.

Fine -- repeat them, put them together, apply your stone texture, post in
p.b.i, improve after you've read the comments and suggestions, then post
again, ...
If you can't create a complete building, make a ruin! :-))

Here is some inspiration for you: "The power of repetition"
The scene consists almost entirely of repetitions of one simple box!

   Sputnik

*/
//=== BEGIN ==============================================================

// +SP8 +EP8 -A +W800 +H600 -FN
// +SP8 +EP8 +A0.001 +AM2 +R3 +W800 +H600 -FN

#declare oClock = 360/12; // for direction as ... o'clock
#declare PicHeight = 21;
#declare PicWidth = 4/3*PicHeight;
#declare PicDist = 1.5*PicWidth;
#declare Focus = 0;
#declare FocusDist = 2000;
#declare CamDirection = 5*oClock; // horizontal position of cam,
                                  // looking in opposite direction
#declare CamHeight = 33; // degrees
#declare CamRollLeft = 0; // degrees

camera {
  location -FocusDist*z
  right PicWidth/2*x
  up PicHeight/2*y
  sky y
  direction PicDist/2*z
  look_at 0
  rotate CamRollLeft*z
  rotate <CamHeight, CamDirection-180, 0>
  translate Focus
  }

light_source { <-1, 4, -2>*10000, rgb 1 }

#declare VerySimpleStoneTex = texture {
  pigment { granite scale 3 }
  finish { ambient .3 diffuse .7 }
  }

#declare StairWidth   = 300;
#declare StairHeight  =  15;
#declare StairDepth   =  20;
#declare StairOverlap =  10;

#macro Stair ()
  box { 0, <StairDepth+StairOverlap, StairHeight, StairWidth>
    // no "}" for "box {" as usual ...
  #end//macro Stair

#macro Stairs (Steps)
  union {
    #declare Step = 0;
    #while (Step<Steps)
      Stair () translate Step*<StairDepth, StairHeight, 0> }
      #declare Step = Step+1;
      #end//while Step
    texture { VerySimpleStoneTex }
    // "}" for "union {" omitted
  #end//macro Stairs

Stairs (25) rotate -80*y translate <450, 0, -400> }

#declare S = 8;
union {
  Stairs (S) }
  union {
    box { 0, <StairWidth, StairHeight, StairWidth>
      texture { VerySimpleStoneTex }
      }
    Stairs (4)
      rotate 90*y
      translate <0, StairHeight, StairOverlap>
      }
    Stairs (6)
      translate -StairWidth*z
      rotate -90*y
      translate <0, StairHeight, StairWidth-StairOverlap>
      }
    translate S*<StairDepth, StairHeight, 0>
    }
  rotate -130*y
  translate <-150, 0, 100>
  }

#declare S = 5;
union {
  Stairs (S-1) }
  Stairs (S)
    scale <-1, 1, 1>
    translate ((2*S-1)*StairDepth+StairOverlap)*x
    }
  rotate -60*y
  translate <-50, 0, -600>
  }

plane { y, 0
  texture { checker
    texture { VerySimpleStoneTex scale 1/50 },
    texture { pigment { color rgb .8 } finish { ambient .3 diffuse .7 } }
    scale 50
    }
  }


//=== END ================================================================


Post a reply to this message

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.