![](/i/fill.gif) |
![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
> I am not sure if I understand what you mean. But let me put it in a way
> that I can understand. There are two special stones. One is at the end of
> one arc and at the beginning of the next one. The other is the one in the
> middle of an arc. Referring to my picture, the latter is the highest one
> in the arc and has a horizontal lower line. The other is 45 degrees
> turned. No matter how you position the other stones. The corner one
> advances sqrt(2) times the side of that stone every arc. The middle one
> can only advance by the side of that stone. So you'll end up with 41%
> space between the center stones of two consecutive arcs . That does not
> happen in real life. Either because not all stones have the same size or
> they are cheating in another way.
Well they are forced to 'cheat' a little, but with skill it doesn't look too
obvious.
In a perfect pattern the ones at the end of the arc would be pretty close to
square and smaller than the ones in the middle of the arc (see the POV-Ray
image I just posted). In a perfect pattern these differences could be fairly
apparent, but the craftsman randomizes the pattern a little using different
block sizes and different mortar gaps, so the 'cheating' becomes less
apparent.
As shown in the picture posted by Thomas, they don't even always pick square
blocks at the outer extremity of the arcs, as very apparent straight lines
would then form. As shown in your picture, if they used identical square
blocks they would indeed end up with large mortar gaps in the middle which I
think would be dissapointing for all concerned :-)
Regards,
Chris B.
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Thomas de Groot wrote:
> Once in a while I try to solve this puzzle, but I give up. It is beyond my
> skills.
>
> How would one model this pavement in POV-Ray? It looks simpler than it is
> as - obviously - the inner arc of a row of stones is smaller than the outer
> arc. In RL (as on the examples below) this is constantly compensated I
> suppose to keep the pattern regular and symmetrical....
>
> Thomas
>
>
>
This is pretty close to what I did with the circular mosaic patterns on
the table tops I posted recently.
The code is real messy, it probably would be more work for you to try
and read it than to write your own but I will try to annotate it if you
are interested.
Basically what I contrived, was a set of concentric bands or rings of a
preset width. Since the tiles were considered squares the width of the
band determined the number of tiles along the inner circumference. But
each sucessive band, as you expand from the center, does not add enough
circumference to accommodate a whole new tile along it each time. So
what I did was average the growing discrepency across the gaps of all
the tiles, rather than leave a gap or try to make a partial tile at the
end. Then when the circumference had expanded enough, I added a new
tile. Also I randomized the 'starting' point for each ring of tiles.
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
I had a bit of a play with a function to create this pattern. Obviously I'm
cheating and not using rectangular blocks. Here's the code:
#declare Wrap = function(a) { (a/2-floor(a/2))*2-1 }
#declare Feeder = function(x,y) { Wrap( (y -
sqrt(1-pow(Wrap(x*sqrt(2))/sqrt(2),2)))*8 ) }
#declare Tiles =
pigment { function {
min(
1-abs(Feeder(x,y))
,
abs(Wrap(8.8*(-Feeder(x,y)*.1+.9)*Wrap(x*sqrt(2))))
)
} }
--
Tek
http://evilsuperbrain.com
"Thomas de Groot" <t.d### [at] inter nlDOTnet> wrote in message
news:48c3964b@news.povray.org...
> Once in a while I try to solve this puzzle, but I give up. It is beyond my
> skills.
>
> How would one model this pavement in POV-Ray? It looks simpler than it is
> as - obviously - the inner arc of a row of stones is smaller than the
> outer
> arc. In RL (as on the examples below) this is constantly compensated I
> suppose to keep the pattern regular and symmetrical....
>
> Thomas
>
>
>
Post a reply to this message
Attachments:
Download 'arctiles.jpg' (122 KB)
Preview of image 'arctiles.jpg'
![arctiles.jpg](/povray.binaries.images/attachment/%3C48c6d20f%40news.povray.org%3E/arctiles.jpg?preview=1)
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
On 09-Sep-08 21:44, Tek wrote:
> I had a bit of a play with a function to create this pattern. Obviously I'm
> cheating and not using rectangular blocks. Here's the code:
>
> #declare Wrap = function(a) { (a/2-floor(a/2))*2-1 }
> #declare Feeder = function(x,y) { Wrap( (y -
> sqrt(1-pow(Wrap(x*sqrt(2))/sqrt(2),2)))*8 ) }
> #declare Tiles =
> pigment { function {
> min(
> 1-abs(Feeder(x,y))
> ,
> abs(Wrap(8.8*(-Feeder(x,y)*.1+.9)*Wrap(x*sqrt(2))))
> )
> } }
>
>
If this were a short code contest, I would say that
pow(Wrap(x*sqrt(2))/sqrt(2),2)) is equivalent to
pow(Wrap(x*sqrt(2)),2)/2)
other than that, I am baffled.
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
While I prefer ChrisB's solution as being closer to the original idea (and
purpose), your variation is very nice indeed introduces an interesting
modulation of the pattern from rectangular to diamond-shaped. I love it!
Thomas
"Tek" <tek### [at] evilsuperbrain com> schreef in bericht
news:48c6d20f@news.povray.org...
>I had a bit of a play with a function to create this pattern. Obviously I'm
>cheating and not using rectangular blocks. Here's the code:
>
> #declare Wrap = function(a) { (a/2-floor(a/2))*2-1 }
> #declare Feeder = function(x,y) { Wrap( (y -
> sqrt(1-pow(Wrap(x*sqrt(2))/sqrt(2),2)))*8 ) }
> #declare Tiles =
> pigment { function {
> min(
> 1-abs(Feeder(x,y))
> ,
> abs(Wrap(8.8*(-Feeder(x,y)*.1+.9)*Wrap(x*sqrt(2))))
> )
> } }
>
>
> --
> Tek
> http://evilsuperbrain.com
>
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
"Jim Charter" <jrc### [at] msn com> schreef in bericht
news:48c49700$1@news.povray.org...
>>
> This is pretty close to what I did with the circular mosaic patterns on
> the table tops I posted recently.
> The code is real messy, it probably would be more work for you to try and
> read it than to write your own but I will try to annotate it if you are
> interested.
> Basically what I contrived, was a set of concentric bands or rings of a
> preset width. Since the tiles were considered squares the width of the
> band determined the number of tiles along the inner circumference. But
> each sucessive band, as you expand from the center, does not add enough
> circumference to accommodate a whole new tile along it each time. So what
> I did was average the growing discrepency across the gaps of all the
> tiles, rather than leave a gap or try to make a partial tile at the end.
> Then when the circumference had expanded enough, I added a new tile. Also
> I randomized the 'starting' point for each ring of tiles.
Thank you Jim! I shall have to read this very carefully. Unfortunately, my
math is a bit below average which is why I could not find a way out of this
conundrum. However, there are great minds here (yours, and Chris' and Tek's)
who readily find a solution. I am truly deeply impressed.
Thomas
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Thomas de Groot wrote:
> "Jim Charter" <jrc### [at] msn com> schreef in bericht
> news:48c49700$1@news.povray.org...
>
>>This is pretty close to what I did with the circular mosaic patterns on
>>the table tops I posted recently.
>>The code is real messy, it probably would be more work for you to try and
>>read it than to write your own but I will try to annotate it if you are
>>interested.
>>Basically what I contrived, was a set of concentric bands or rings of a
>>preset width. Since the tiles were considered squares the width of the
>>band determined the number of tiles along the inner circumference. But
>>each sucessive band, as you expand from the center, does not add enough
>>circumference to accommodate a whole new tile along it each time. So what
>>I did was average the growing discrepency across the gaps of all the
>>tiles, rather than leave a gap or try to make a partial tile at the end.
>>Then when the circumference had expanded enough, I added a new tile. Also
>>I randomized the 'starting' point for each ring of tiles.
>
>
> Thank you Jim! I shall have to read this very carefully. Unfortunately, my
> math is a bit below average which is why I could not find a way out of this
> conundrum. However, there are great minds here (yours, and Chris' and Tek's)
> who readily find a solution. I am truly deeply impressed.
>
> Thomas
>
>
Well Chris's solution is more comprehensive so I will leave it at that!
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
#include "shapes.inc"
#declare S=seed(0);
#local Scale = .375;
#local StartRing = 5;
#local NumberOfRings=10;
#local TileSize = .48*Scale; //set the space for grout
#local Ring=StartRing;
//circular grid
#while(Ring<NumberOfRings)
//#debug #concat ("\n Lat ",str(Lat,0,0 ))
#local Circum = 2*3.1416*Ring*Scale;
#local NumberOfTiles = int(Circum/Scale);
#local Remainder = mod(Circum/Scale,1);
#local Adj = 1+Remainder/NumberOfTiles;
#local Offset=60*rand(S);
#local Tile=1;#while(Tile<NumberOfTiles+1 )
object {
Round_Box_Merge (
<-TileSize,0,0>,
<TileSize,-.5,2*TileSize>,
TileSize/20
)
translate <0,0,Ring*Scale>
rotate y*(Offset+(360*(Tile*Adj)/(Circum/Scale)))
pigment { rgb .5}
}
#local Tile=Tile+1;#end
#local Ring=Ring+1;#end
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
>> "Thomas de Groot" <t.d### [at] inter nlDOTnet> wrote in message
>> news:48c3964b@news.povray.org...
>>>
>>> How would one model this pavement in POV-Ray?
> Below is a simple POV-Ray encapsulation of this. There are lots of things
> you can play with, ...
I've tidied this macro up, written it up and added it to the Object
Collection. at
http://lib.povray.org/collection/curvedpaving/chrisb%201.0/curvedpaving.html
It's probably too late to be of use to Thomas, but maybe someone else can
make use of it.
Regards,
Chris B.
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
"Chris B" <nom### [at] nomail com> schreef in bericht
news:49259471$1@news.povray.org...
>
>
> I've tidied this macro up, written it up and added it to the Object
> Collection. at
> http://lib.povray.org/collection/curvedpaving/chrisb%201.0/curvedpaving.html
>
> It's probably too late to be of use to Thomas, but maybe someone else can
> make use of it.
>
Thanks a lot Chris! I had no immediate use for this pavement when I started
the thread. It had been playing in my mind for quite a long time and it just
came up again. However, I am sure I shall find use for it sooner or later.
Thomas
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |