I never really understood how to use higher order functions as combinators, until I read the article from Peter Henderson about Functional Geometry. Now it is easy for me to use it in Lisp:
In article <ct0po8$57...@newsreader2.netcologne.de>, Frank Buss <f...@frank-buss.de> wrote:
> I never really understood how to use higher order functions as combinators, > until I read the article from Peter Henderson about Functional Geometry. > Now it is easy for me to use it in Lisp:
Frank Buss <f...@frank-buss.de> writes: > I never really understood how to use higher order functions as combinators, > until I read the article from Peter Henderson about Functional Geometry. > Now it is easy for me to use it in Lisp:
As Rainer Joswig pointed out, Scheme designers were interested with Henderson's examples, too.
For people who want to see Henderson's ideas in action this video set is a good choice. I guess it is the 4th or 5th .avi file that includes a lecture about how to produce Escher style pictures using a functional programming language and Henderson's ideas:
> For people who want to see Henderson's ideas in action > this video set is a good choice. I guess it is the 4th or 5th > .avi file that includes a lecture about how to produce > Escher style pictures using a functional programming > language and Henderson's ideas:
> > For people who want to see Henderson's ideas in action > > this video set is a good choice. I guess it is the 4th or 5th > > .avi file that includes a lecture about how to produce > > Escher style pictures using a functional programming > > language and Henderson's ideas:
> "Marc Battyani" <Marc.Batty...@fractalconcept.com> wrote: > > Postscript is deprecated. Today, world domination requires that you produce > > PDF output with cl-pdf ;-)
> Actually if you use CLIM, you can directly generate > Postscript from its graphics routines.
Trent Buck <gerago...@tznvy.pbz> wrote: > Up spake Emre Sevinc: >> For people who want to see Henderson's ideas in action >> this video set is a good choice.
Interesting lecture. The base concept is slightly different: My "picture" returns a list of lines when called, while his picture draws itself when called, but the rest is the same. But I don't like the Scheme notation, because for me it is more clear to see a "funcall" when a function is being called.
Another good part: at the end of the lecture he compares the top-down methodology with the "levels of languages" methodology and explains why it is more robust to use embedded languages in Lisp.
Regarding the picture: Would be nice to enhance the program to produce a more exact reproduction of the original picture, filled with color, with curved lines and recursive to level n (see "Square Limit"):
On Mon, 24 Jan 2005 04:28:53 +0000 (UTC), <f...@frank-buss.de> wrote:
> Regarding the picture: Would be nice to enhance the program to produce a > more exact reproduction of the original picture, filled with color, with > curved lines and recursive to level n (see "Square Limit"):
Well, if you examine the Escher picture, you can see at least 2 different 'fish'. Henderson claimed that there are 4, but I couldn't find 2 more. In the second paper, Henderson describes a 'triangle effect' (the second fish is the first fish with this triangle merged into one wing), which alas, is also visible in your graphics (p,q,r,s are incomplete apparently). Adding color will only enhance the triangles. Escher covered them up rather well by two-tone shading and partial line segments to trick your eye.
The second papers discussion of there actually being a single curved line segment that generates the outline of the fish is the more interesting piece (IMO). That curve is drawn about a right triangle, with some simple operations occurring, but the key rot45 appears on the hypotenuse. Following up this concept with a line generator which is then mapped onto the right triangle for the tessellations, in common lisp with .ps (or .pdf) output would be neat.
Thanks for providing some interesting reading and thinking Frank!
-- Everyman has three hearts; one to show the world, one to show friends, and one only he knows.
>> Regarding the picture: Would be nice to enhance the program to produce a >> more exact reproduction of the original picture, filled with color, with >> curved lines and recursive to level n (see "Square Limit"):
> Well, if you examine the Escher picture, you can see at least 2 > different 'fish'. Henderson claimed that there are 4, but I couldn't > find 2 more. In the second paper, Henderson describes a 'triangle > effect' (the second fish is the first fish with this triangle merged > into one wing), which alas, is also visible in your graphics (p,q,r,s > are incomplete apparently). Adding color will only enhance the > triangles. Escher covered them up rather well by two-tone shading and > partial line segments to trick your eye.
Well, curve support looks easy to add, just use ((x1 y1)(x2 y2)(x3 y3)(x4 y4)) to define a bezier curve, change the loop in GRID to:
(loop for line in s collect (mapcar (lambda (point) (p+ (p/ (p* b (first point)) m) a (p/ (p* c (second point)) n))) line))
In article <ct0po8$57...@newsreader2.netcologne.de>, Frank Buss <f...@frank-buss.de> wrote:
> I never really understood how to use higher order functions as combinators, > until I read the article from Peter Henderson about Functional Geometry. > Now it is easy for me to use it in Lisp: