|
From: | Martial R |
Subject: | Re: Au sujet de titres |
Date: | Sat, 25 Jan 2020 18:17:52 +0100 |
Etat des lieux :%%%%%%%%%%%\version "2.19.20"\version "2.21.0"
#(define-markup-command (arcText layout props radius size txt)
(number? number? string?)
(let* ((font-size size)
(pi (atan 0 -1))
(txt-len (* font-size 0.44 (string-length txt)))
(circle-len (* pi radius 2))
(angle-rad (/ txt-len radius))
(t (/ angle-rad 2))
(h 0.6)
(d (/ (* (- font-size 1) h) 3))
(u (- (* (- font-size 1) h) d))
(dist-haut (+ radius u))
(dist-bas (* (- radius d) (cos t)))
(height (- dist-haut dist-bas))
(raise (- dist-haut (+ u 1.5)))
(width (* 2 (+ radius u) (sin t))))
(if (> angle-rad pi) (set! width (* radius 2)))
(interpret-markup layout props
(markup #:box
#:with-dimensions
(cons (* width -.5) (* width .5))
(cons (* height -.5) (* height .5))
#:raise (- raise) ; non!
#:postscript
(format #f "
/r ~a def
/ch 1 string def
/Times findfont
~a scalefont
setfont
0 0 translate
/text (~a) def
/depar text stringwidth pop 90 mul ~a div
r div def
depar rotate
text {
ch 0 3 2 roll put
/l ch stringwidth pop def
/dec l r atan 2 div neg def
0 0 moveto dec rotate l neg 2 div r rmoveto
ch show dec rotate
} forall
" radius font-size txt pi)))))
\header {
title = \markup \arcText #40 #8 "petit texte"
title = \markup \arcText #30 #3 "long long long long long texte"
%title = \markup \arcText #10 5 "long long long long long texte"
}
\relative c'' {
c1
}%%%%%%%%%%Christophe PochonLe ven. 24 janv. 2020 à 22:59, Christophe Pochon <address@hidden> a écrit :trouveraiChristophe PochonLe ven. 24 janv. 2020 à 22:57, Christophe Pochon <address@hidden> a écrit :Je ne sais pas si je trouverais la solution. Je vais encore m'y atteler ces prochains jours. Mais en tout cas, une chose est sûre : ce projet m'a permis de comprendre beaucoup mieux scheme et j'en suis ravi !Christophe PochonLe ven. 24 janv. 2020 à 18:46, Olivier Miakinen <address@hidden> a écrit :Le 24/01/2020 17:52, j'écrivais :
>
> Voici une image d'illustration : https://i.goopics.net/naa5p.png
>
> En haut, le texte s'il devait s'afficher normalement, tout droit et
> horizontalement. J'ai représenté en bleu le rectangle englobant le
> texte. La ligne horizontale rouge est celle dont la longueur sera
> préservée sur le cercle (bien évidemment, les longueurs au dessus
> deviendront plus grandes, et celles en dessous plus petites).
>
> En bas, le texte en arc de cercle. La ligne en rouge est à une
> distance r du centre du cercle, les autres arcs de cercle étant
> respectivement à r+u et r-d de ce centre.
Et voici déjà quelques valeurs, en espérant que je ne me sois pas
trompé.
Soit t la moitié de l'angle de l'arc de cercle.
On a t = (l/r)/2 = l/2r (en radians).
On a alors les résultats suivants concernant le rectangle en orange qui
englobe le texte en arc de cercle :
1) la longueur de ce rectangle est 2⋅(r+u)⋅sin(t)
2) la distance du bas du rectangle au centre du cercle est (r-d)⋅cos(t)
3) la distance du haut du rectangle au centre du cercle est (r+u)
4) la hauteur du rectangle est donc (r+u) - (r-d)⋅cos(t)
Bien sûr, ceci n'est vrai que tant que l est inférieur à pi⋅r, c'est-
à-dire que l'arc ne fait pas plus d'un demi-tour.
--
Olivier Miakinen
[Prev in Thread] | Current Thread | [Next in Thread] |