Re: Functional Geometry for fishes

From: Geoffrey Summerhayes (sumrnot_at_NhOoStPmAaMil.com)
Date: 01/27/05


Date: Thu, 27 Jan 2005 02:35:34 -0500


"GP lisper" <spambait@CloudDancer.com> wrote in message news:1106576653.d99305b82a9725848d1fded3b202ba9a@teranews...
> On Mon, 24 Jan 2005 04:28:53 +0000 (UTC), <fb@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.

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))

and alter PLOT:

(ecase (length line)
    (2 (... "~D ~D moveto ~D ~D lineto~%" ...))
    (4 (... "~D ~D moveto ~D ~D ~D ~D ~D ~D curveto~%" ...)))

That should do it. (untested)

--
Geoff