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:21:15 EDT (-0400)
  Re: Fitting a gothic trefoil into an equilateral triangle  
From:
Date: 2 Jul 2003 21:54:10
Message: <3f038cc2$1@news.povray.org>
Hi Mark,

I suggested to clip with a "center cylinder" to get rid of the sharp "inner
spikes", just for aesthetical reasons.


> >   - create your *own* stone texture
>
> jaw drops, mouth goes dry, limbs gradually go numb... ;-)

Why this?
Experiment with some stone textures from stones1.inc and stones2.inc, modify
the colors in the color_map (and convert the color_maps to the new syntax!)
use other wave_types, play around with different patterns, scaling (even and
uneven) and rotation, modify the modifiers. Then finish, normal, layered
textures, ...
A perfect stone texture is difficult, but an acceptable stone texture isn't.


> I went thorough a lot of trouble to get the vault ribbing to look like it
> was composed of individual component pieces

Why "look like"? You could use truly individual components! (Don't forget
the mortar between them!)


Now I reveal: The trick of the missing "}"
Assume you want a macro for a simple ring:

    #macro Ring(Size)
      difference {
        cylinder { -0.05*y, 0.05*y, 0.5 }
        cylinder { -0.051*y, 0.051*y, 0.4 }
        scale Size
        }
      #end//of macro Ring

Now you can use this macro to create a ring at the origin with the default
texture:

    Ring(3)

This is equivalent to the body of the macro with parameter names replaced
by the supplied value, i.e. this represents a complete difference statement.
But if you want to apply a texture, translate it or such, you have to write

    object { Ring(3) texture { MyRingTex } translate <1, 2, 3> }

I prefer to leave out the line with the single "}" in the macro. (It is
legal to have unmatched parentheses in a macro.) Now Ring(3) delivers

    difference {
        cylinder { -0.1*y, 0.1*y, 0.5 }
        cylinder { -0.11*y, 0.11*y, 0.4 }
        scale 3

and you can append whatever is possible with a difference. At the end the
matching "}" for the "difference {" must be supplied. So for example

    Ring(3) texture { MyRingTex } translate <1, 2, 3> }

is the same as

    difference {
        cylinder { -0.1*y, 0.1*y, 0.5 }
        cylinder { -0.11*y, 0.11*y, 0.4 }
        scale 3
        texture { MyRingTex } translate <1, 2, 3> }

In short: the "}" is not supplied in the macro, but in the SDL after the
invocation of the macro.

Don't worry about slow progress: this only means your work is improving
your POV-Ray expertise instead of your scene -- you should be happy
about this!

   Sputnik


Post a reply to this message

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