Code: Select all
startshape TRIANGLE
rule TRIANGLE{
CIRCLE{}
TRIANGLE {x 1 }
TRIANGLE2 {x 1 y 1 }
}
rule TRIANGLE2{
SQUARE {}
TRIANGLE {x 1 }
TRIANGLE2 {x 1 y 1 }
}
Moderators: MtnViewJohn, chris, mtnviewmark
Code: Select all
startshape TRIANGLE
rule TRIANGLE{
CIRCLE{}
TRIANGLE {x 1 }
TRIANGLE2 {x 1 y 1 }
}
rule TRIANGLE2{
SQUARE {}
TRIANGLE {x 1 }
TRIANGLE2 {x 1 y 1 }
}
Code: Select all
startshape TRIANGLE
rule TRIANGLE{
CIRCLE{}
TRIANGLE {x 1 }
TRIANGLE {x 1 y 1 }
}
Code: Select all
startshape TRIANGLE
rule TRIANGLE{
CIRCLE{}
LINE {x 1 }
TRIANGLE {x 1 y 1 }
}
rule LINE {
CIRCLE{ }
LINE {x 1 }
}
Yeah, I've tried that, but I've run into other problems regarding fuzzy boundaries prior to objects reaching a sufficiently small size; I still plan to try some other strategies. Nevertheless, given that the non-linear behavior crops up within a few iterations (only about six or seven columns over), it seems likely something is off. If it's a necessary consequence of keeping the system from blowing up, that's fine, but I think this may be a limiting case of something which affects a large category of less extreme designs. Even so, it's pretty darn coolchris wrote: I think you can generate a triangle with a recursive generation where the shapes inside get smaller. Generally growing them up by distance rather than scale is slower.
Aha, that makes sense; I hadn't considered that the branches were getting processed differently, which is kind of obvious now that you point it out. I will note, however, that order of commands can matter aesthetically even though it doesn't structurally: if a series of commands is performed after a SQUARE{} call, for example, they get dropped on top of it, whereas calling the SQUARE{} afterwards places the square "in front", a difference which becomes obvious when the square is a different brightness than the other commands.MtnViewMark wrote: Normally, the order doesn't matter a wit (a direct consequence of it being context free in the mathematical sense). But that is because eventually all expansions are done (or dropped because they are too small to be seen).
Incidentally, if you modify your version to be just linear, the bottom edge gets a reasonable chance of being expanded before stop, and the raggedness displays along the right edge.
They will happily render 'til the cows come home! Actually, in either the original construction, or my linear version, the Context Free will stop rendering when the unit size becomes less than 0.3 of a pixel. So, if you are rendering into a 500x500 pixel image, you have to wait until the triangle has more than 1666 columns. With my linear version you can actually wait it out and see the result. With the original exponential version, I don't thing there is enough time in the universe to wait for the 2^1666 expansions!chris wrote: (I haven't played with the new releases enough yet to see how they handle this, but my guess is they just stop at some point.)
cc