[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Triangle spiral (Was: Margin kerning, inter-sentence spacing and dra
From: |
Matej Nanut |
Subject: |
Re: Triangle spiral (Was: Margin kerning, inter-sentence spacing and drawings) |
Date: |
Sat, 14 Jul 2012 10:41:11 +0200 |
Fascinating! Thank you for the quick reply, the solution and its explanation.
On 14 July 2012 01:39, Valeriy E. Ushakov <address@hidden> wrote:
> On Fri, Jul 13, 2012 at 17:41:22 +0200, Matej Nanut wrote:
>
>> 3. Is it possible to do something like this:
>> "http://www.texample.net/tikz/examples/rotated-triangle/" in Lout? The
>> first problem I come accross is how to implement addition (like +10)
>> cleanly.
>
> I guess the following quick hack would be a good start. Adding color
> gradient is left as an exercise :)
>
> import @Geometry @Diag
> def @TriangleSpiral
> right count
> {
> # a bit of syntactic sugar
> def @PointOn
> named from {}
> named to {}
> named at {}
> {
> from ** { 1 - at } ++ to ** at
> }
>
> def @NestedTriangle
> body @Body
> {
> @Node
> outline {
> # XXX: cannot define Pi directly because of shadowing (think
> # LET* vs LET), so local P1 would shadow container's P1 and mess
> # up location of local P3
> MYP1:: @PointOn from { P1 } to { P2 } at { 0.85 }
> MYP2:: @PointOn from { P2 } to { P3 } at { 0.85 }
> MYP3:: @PointOn from { P3 } to { P1 } at { 0.85 }
>
> # give them desired names
> P1:: MYP1 P2:: MYP2 P3:: MYP3
>
> # define the path
> P1 P2 P3 P1
> }
> { @Body }
> }
>
> def @RepeatNestedTriangles
> right i
> {
> @NestedTriangle {
> i @Case {
> count @Yield @Null
> else @Yield @RepeatNestedTriangles @Next i
> }
> }
> }
>
> @Polygon {
> "12c" @Wide {} //0io
>
> # we start at "2" b/c this initial polygon is "1"
> @RepeatNestedTriangles 2
> }
> }
>
>
> To test:
>
> @Doc @Text @Begin
> //4c
> @Diag { @TriangleSpiral 15 }
> @End @Text
>
>
> A bit of a wart here is that @Polygon produces a triangle that is
> actually smaller than the total object width, you can see it in the
> User's Guide example (Section 9.12 "Summary"). @Isosceles makes the
> base vertex of the right width, but you would need to compute the
> hight manually and add some retagging to provide Pi tags referred by
> the nested triangles.
>
> Also, the //4c gap in the test is to accomodate the parts of the outer
> triangle outside the object boundaries. Again, @Isosceles should help
> with this.
>
> Note that "12c" needs to be quoted to avoid "c" from @Geometry. More
> hygienic imports (only @PointOn needs @Geometry) should solve this.
>
> -uwe
>
- Margin kerning, inter-sentence spacing and drawings, Matej Nanut, 2012/07/13
- Triangle spiral (Was: Margin kerning, inter-sentence spacing and drawings), Valeriy E. Ushakov, 2012/07/13
- Re: Triangle spiral (Was: Margin kerning, inter-sentence spacing and drawings),
Matej Nanut <=
- Re: Margin kerning, inter-sentence spacing and drawings, Jeff Kingston, 2012/07/14
- Re: Margin kerning, inter-sentence spacing and drawings, Ludovic Courtès, 2012/07/20