lilypond-user
[Top][All Lists]
Advanced

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

Re: How to get X/Y-extent of a bezier-curve?


From: Thomas Morley
Subject: Re: How to get X/Y-extent of a bezier-curve?
Date: Wed, 7 Oct 2015 14:08:54 +0200

2015-10-07 13:13 GMT+02:00 David Kastrup <address@hidden>:
>> Thomas Morley <address@hidden> writes:

>> I think we could replace the body of current
>> make-bezier-sandwich-stencil with make-path-stencil.
>> But obviously you think about some deeper modification.
>> Could you give some details?
>
> No, not really.  When I tabled this issue, I thought that
> make-bezier-sandwich was dead for some reason but I think that it's used
> in several places such as (obviously related) slurs.

Well:

git grep make-bezier-sandwich-stencil
scm/fret-diagrams.scm:        (make-bezier-sandwich-stencil
scm/stencil.scm:(define (make-bezier-sandwich-stencil coords thick xext yext)
scm/stencil.scm:    (make-bezier-sandwich-stencil

Not much.

> And I found it
> awkward to use the undertie as the basic shape and derive parentheses
> via rotation.

The code in my initial mail uses coord-rotate (not
ly:stencil-rotate-absolute as in Jans suggestion)
What do you think about this method?

Ofcourse it was heavily simplified, maybe best to put up a patch to
have the full code for more detailed discussion.

> And I thought this was essentially user-level code
> needing significant modification.
>
> All in all, I had a significant number of misconceptions about the work
> involved with completing this issue and even though becoming gradually
> aware of them I never picked up that dropped ball again.
>
> It should be reasonably low-hanging fruit.
>
> With regard to my comments to make-path-stencil's operation, the numeric
> code is just not what I like.
>
> If you take a look at the following, it is quite inefficient since it
> repeats a lot of calculations instead of assigning partial results to
> let-bound variables.  It also uses the straight PQ formula whereas the
> usual way to avoid numerical inaccuracies is to use the PQ formula only
> for the zero where the sign of the +/- does not lead to cancellation and
> get the other zero via Viata's rule.
>
> (define (bezier-part-min-max x1 x2 x3 x4)
[...]

No promise, but maybe I'll take a look.
Not that I know about Viata's or L'hopital's rule, but google maybe
helpfull, otherwise I'll reask

Cheers,
  Harm



reply via email to

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