lilypond-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Oval stencil and oval markup suggestions


From: Pierre Perol-Schneider
Subject: Re: Oval stencil and oval markup suggestions
Date: Fri, 5 Apr 2019 08:58:11 +0200

(I meen the ovals, not the combination).

Le ven. 5 avr. 2019 à 08:55, Pierre Perol-Schneider <
address@hidden> a écrit :

> Hi Harm,
> Not getting a perfect circle is no issue. What I found not neet is that:
>
> \markup {
>   \combine
>   \stencil #(make-oval-stencil 3 2 .13 #f)
>   \stencil #(make-oval-stencil 2 3 .13 #f)
> }
>
> have no axis of symmetry.
> Cheers,
> Pierre
>
>
> Le jeu. 4 avr. 2019 à 22:03, Thomas Morley <address@hidden> a
> écrit :
>
>> Am Do., 4. Apr. 2019 um 17:34 Uhr schrieb Pierre Perol-Schneider
>> <address@hidden>:
>> >
>> > Hi Dev Team,
>> > Here's some thougts:
>> >
>> > %%%%%%
>> > \version "2.19.83"
>> >
>> > %% The oval stencil commands uses beziers curves that cause some side
>> > effects:
>> > \markuplist {
>> >   \line\vcenter {
>> >     "Circle, radius = 2 : "
>> >     \stencil #(make-circle-stencil 2 .13 #f)
>> >   }
>> >   \line\vcenter {
>> >     "Oval, x-radius = y-radius = 2 : "
>> >     \stencil #(make-oval-stencil 2 2 .13 #f)
>> >   }
>> >   \line\vcenter {
>> >     "Oval extents, x-radius = y-radius = 2 : "
>> >     \box\stencil #(make-oval-stencil 2 2 .13 #f)
>> >   }
>> > }
>> >
>> > %% Here's a suggestion with a corrected y-radius in order to reach a
>> quasi
>> > circle:
>> [...]
>>
>> Hi Pierre,
>>
>> current `make-oval-stencil´, used via `oval-stencil´ in the
>> `oval´-markup-command uses beziers, yes.
>> Though, you will never get a perfect circle using beziers. I don't
>> understand why you see this as an issue.
>> Maybe the naming x-radius/y-radius is misleading, because x-radius
>> mirrors the final x-extent, but y-radius the y-extent of the
>> control-points, not of the final oval.
>> Ofcourse this has impact an the final dimensions, which you
>> demonstrated by applying \box.
>> If we think this is a problem I'd rather suggest to do:
>>
>> #(define-public (make-oval-stencil-harm x-radius y-radius thickness fill)
>>   "Make an oval from two Bezier curves, of address@hidden @var{x-radius},
>> address@hidden @code{y-radius}, and thickness @var{thickness} with fill
>> defined by @code{fill}."
>>   (let*
>>       ((x-out-radius (+ x-radius (/ thickness 2.0)))
>>        (y-out-radius (+ y-radius (/ thickness 2.0)))
>>        (x-max x-radius)
>>        (x-min (- x-radius))
>>        (y-max y-radius)
>>        (y-min (- y-radius))
>>        (commands `(,(list 'moveto x-max 0)
>>                    ,(list 'curveto x-max y-max x-min y-max x-min 0)
>>                    ,(list 'curveto x-min y-min x-max y-min x-max 0)
>>                    ,(list 'closepath)))
>>        (command-list (fold-right append '() commands)))
>>     ;(ly:make-stencil
>>     ; `(path ,thickness `(,@',command-list) 'round 'round ,fill)
>>     ; (cons (- x-out-radius) x-out-radius)
>>     ; (cons (- y-out-radius) y-out-radius))
>>     (make-path-stencil
>>       command-list
>>       thickness 1 1 fill)))
>>
>> Cheers,
>>   Harm
>>
>


reply via email to

[Prev in Thread] Current Thread [Next in Thread]