bug-lilypond
[Top][All Lists]
Advanced

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

Re: Feature request: Display bezier control-points


From: Urs Liska
Subject: Re: Feature request: Display bezier control-points
Date: Fri, 04 May 2012 02:45:40 +0200
User-agent: Mozilla/5.0 (X11; Linux i686; rv:11.0) Gecko/20120329 Thunderbird/11.0.1

Am 04.05.2012 02:31, schrieb Urs Liska:
Am 04.05.2012 02:08, schrieb David Nalesnik:
Hi Urs,

    > It would be a really valuable feature if one could let LilyPond
    display
    > the control-points of a bezier curve.
    > I would imagine something like a cross or a point at the middle two
    > control-points.


I think this would be very helpful, so that you can visualize exactly what these control-points are that you're setting. (It must be a common misconception that they are points on the actual curve.)

I'm not sure what impact this may have on the layout, but you could do something like the following:

\version "2.15.37"

#(define (make-cross-stencil coords)
  (ly:stencil-add
    (make-line-stencil 0.1 (- (car coords) 0.2) (- (cdr coords) 0.2)
  (+ (car coords) 0.2) (+ (cdr coords) 0.2))
    (make-line-stencil 0.1 (- (car coords) 0.2) (+ (cdr coords) 0.2)
  (+ (car coords) 0.2) (- (cdr coords) 0.2))))

#(define display-control-points
  (lambda (grob)
    (let ((stencil (ly:slur::print grob))
          (cps (ly:grob-property grob 'control-points)))
      (ly:stencil-add stencil
     (make-cross-stencil (second cps))
     (make-cross-stencil (third cps))))))
\relative c'' {
  \override Slur #'stencil = #display-control-points
  c( d e f)
}

Hope you find this helpful!
Wow, extremely!
Of course I would prefer to have this built-in.
And as you I can't really judge if this has side effects.
But this really _is_ helping to find suitable values for the control-points.

  * Although I know bezier curves from vector graphics software, I
    also was convinced that the 'control-points' were four points on
    the curve that define its shape.
  * In fact the first and last are such points, whereas the middle two
    'control-points' are the 'handles'.
    -> Is this explained somewhere?
  * From seeing the crosses I now realize that (when using your
    function) all four offsets are relative to LilyPond's original
    decision.
    Well, if you think about it, that's quite obvious, but I always
    assumed that if I change one offset the other control-points would
    be affected accordingly.
    But in fact they aren't. So if I for example raise the endpoint of
    a slur, the third control-point may well get below the slur.
    This makes me understand the seemingly strange behaviour of the
    slurs when fiddling with the offsets.
  * -> Probably it'll greatly improve my 'tweaking experience', even
    if I have seen this only once, not to speak if I manage to include
    this in a real-life workflow ...
    So, many thanks once more, David!

I'll test this together with your new offset function (I intended to do it this very evening, but it has become sooo late now (here in Central Europe) ...

At least one thing, which I did do right now:
I compiled one score with and without your cross setting, and comparing the two pdfs with Alt-Tab showed that the layout was perfectly identical - except for the additional crosses.
So obviously the crosses are added after LilyPond decides about the layout.
So tomorrow I will incorporate all this into my set-up (in a way that in 'draft mode' display-control-points is active by default)

I would be very happy about one or two more features (that I unfortunately can't implement myself:
- highlight (and separate from the music) the crosses through a color
- possibly adding a connecting (very thin) line, making it even more intuitive

Best
Urs

Best
Urs


-David






reply via email to

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