Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Simple dessin avec LibreCad

185 views
Skip to first unread message

capfree

unread,
Jul 20, 2013, 3:23:20 PM7/20/13
to
Bonjour

J'ai besoin du dessin d'une sorte d'ast�risque, plus exactement
partant d'un centre de tracer 31 lignes radiantes �quidistantes,
qui soient s�par�es par un angle de 360� / 31

J'ai un peu cherch� comment faire, arriv� sur LibreCad qui aurait l'air
de convenir � cet usage, je suis perdu dans le manuel

http://www.qcad.org/doc/qcad/2.2/reference/fr/qcad-manual-fr.pdf

Quelqu'un aurait-il l'obligeance de m'aider?

Merci d�j� de m'avoir lu.


--
capfree -

Doug713705

unread,
Jul 20, 2013, 8:20:22 PM7/20/13
to
Le 20-07-2013, capfree nous expliquait dans fr.comp.applications.libres :
> Bonjour

Bonjour,

> J'ai besoin du dessin d'une sorte d'astᅵrisque, plus exactement
> partant d'un centre de tracer 31 lignes radiantes ᅵquidistantes,
> qui soient sᅵparᅵes par un angle de 360ᅵ / 31
>
> J'ai un peu cherchᅵ comment faire, arrivᅵ sur LibreCad qui aurait l'air
> de convenir ᅵ cet usage, je suis perdu dans le manuel
>
> http://www.qcad.org/doc/qcad/2.2/reference/fr/qcad-manual-fr.pdf
>
> Quelqu'un aurait-il l'obligeance de m'aider?

Je ne connais pas qcad mais ImageMagick est ton ami.

On doit pouvoir faire mieux mais voici un petit script qui fait le
boulot :

#!/bin/bash

FILE=~/asterisk.png # L'image
TMP=$FILE.bak # Fichier de travail temporaire

IMAGE_WIDTH=300 # Largeur de l'image
IMAGE_HEIGHT=300 # Hauteur de l'image

NUM_ARMS=31 # Nombre de branches

R=150 # Longueur du rayon des branches de l'ᅵtoile
LINE_WIDTH=5 # Largeur des branches de l'ᅵtoile
LINE_COLOR=#000

#*************************************************
# Ne plus rien toucher en dessous de cette ligne
#*************************************************

DEG=$(echo "scale=15;(360/$NUM_ARMS)" | bc) # Angle entre rayons
PI=$(echo "scale=10; 4*a(1)" | bc -l) # Pi

OX=$(echo "scale=10;$IMAGE_WIDTH/2" | bc) # Coordonnᅵe X du centre de l'image
OY=$(echo "scale=10;$IMAGE_HEIGHT/2" | bc) # Coordonnᅵe Y du centre de l'image

rm $FILE $TMP 2>/dev/null

convert -size $IMAGE_WIDTH"x"$IMAGE_HEIGHT xc:transparent -fill transparent $FILE

for I in $(seq 1 $NUM_ARMS)
do
ANGLE=$(echo "scale=10;$I*$DEG" | bc)
PX=$(echo "scale=10;$R*c($PI*$ANGLE/180)+$OX" | bc -l)
PY=$(echo "scale=10;$R*s($PI*$ANGLE/180)+$OY" | bc -l)

echo "Branche nᅵ $I ($OX, $OY | $PX,$PY |ᅵ$ANGLE)"

convert -stroke $LINE_COLOR -strokewidth $LINE_WIDTH -draw "line $OX,$OY $PX,$PY" $FILE $TMP
mv $TMP $FILE
done

rm $TMP 2>/dev/null


--
Doug - Linux user #307925 - Slackware64 roulaize ;-)
Without freedom of choice there is no creativity.
-- Kirk, "The return of the Archons", stardate 3157.4

capfree

unread,
Jul 21, 2013, 11:48:47 AM7/21/13
to
Le 21/07/2013 02:20, Doug713705 a ᅵcrit :

>
> Je ne connais pas qcad mais ImageMagick est ton ami.
>
> On doit pouvoir faire mieux mais voici un petit script
> qui fait le boulot :
> FILE=~/asterisk.png # L'image

http://cjoint.com/?3GvrNWqMTgW

Merci, excellent! :-)

Encore un petit coup de main? :

Format des rayons pour imprimer en A8 environ, ᅵpaisseur du trait 1mm,
je devrais y arriver en tᅵtonnant, mais il fait bien chaud et... ;-)

--
capfree - j'ai pas fait ma sieste ;-)

capfree

unread,
Jul 21, 2013, 12:08:09 PM7/21/13
to
Le 21/07/2013 17:48, capfree a ᅵcrit :
Si, c'ᅵtait simple comme bonjour, merci beaucoup.

C'est pour me faire un calendrier mensuel perpᅵtuel.

--
capfree -

capfree

unread,
Jul 21, 2013, 8:21:54 PM7/21/13
to
Le 21/07/2013 02:20, Doug713705 a écrit :
> Le 20-07-2013, capfree nous expliquait dans fr.comp.applications.libres :
>> Bonjour
>
> Bonjour,
>
>> J'ai besoin du dessin d'une sorte d'astérisque, plus exactement
>> partant d'un centre de tracer 31 lignes radiantes équidistantes,
>> qui soient séparées par un angle de 360° / 31
>>
>> J'ai un peu cherché comment faire, arrivé sur LibreCad qui aurait l'air
>> de convenir à cet usage, je suis perdu dans le manuel
>>
>> http://www.qcad.org/doc/qcad/2.2/reference/fr/qcad-manual-fr.pdf
>>
>> Quelqu'un aurait-il l'obligeance de m'aider?
>
> Je ne connais pas qcad mais ImageMagick est ton ami.
>
> On doit pouvoir faire mieux mais voici un petit script qui fait le
> boulot :
>
> #!/bin/bash
>
> FILE=~/asterisk.png # L'image
> TMP=$FILE.bak # Fichier de travail temporaire
>
> IMAGE_WIDTH=300 # Largeur de l'image
> IMAGE_HEIGHT=300 # Hauteur de l'image
>
> NUM_ARMS=31 # Nombre de branches
>
> R=150 # Longueur du rayon des branches de l'étoile
> LINE_WIDTH=5 # Largeur des branches de l'étoile
> LINE_COLOR=#000
>
> #*************************************************
> # Ne plus rien toucher en dessous de cette ligne
> #*************************************************
>
> DEG=$(echo "scale=15;(360/$NUM_ARMS)" | bc) # Angle entre rayons
> PI=$(echo "scale=10; 4*a(1)" | bc -l) # Pi
>
> OX=$(echo "scale=10;$IMAGE_WIDTH/2" | bc) # Coordonnée X du centre de l'image
> OY=$(echo "scale=10;$IMAGE_HEIGHT/2" | bc) # Coordonnée Y du centre de l'image
>
> rm $FILE $TMP 2>/dev/null
>
> convert -size $IMAGE_WIDTH"x"$IMAGE_HEIGHT xc:transparent -fill transparent $FILE
>
> for I in $(seq 1 $NUM_ARMS)
> do
> ANGLE=$(echo "scale=10;$I*$DEG" | bc)
> PX=$(echo "scale=10;$R*c($PI*$ANGLE/180)+$OX" | bc -l)
> PY=$(echo "scale=10;$R*s($PI*$ANGLE/180)+$OY" | bc -l)
>
> echo "Branche n° $I ($OX, $OY | $PX,$PY | $ANGLE)"
>
> convert -stroke $LINE_COLOR -strokewidth $LINE_WIDTH -draw "line $OX,$OY $PX,$PY" $FILE $TMP
> mv $TMP $FILE
> done
>
> rm $TMP 2>/dev/null
>
>


Pour finir, puis-je encore vous demander d'ajouter trois cercles
concentriques et centrés bien sûr aux environs des 2/3 du diamètre?
Je les positionnerais au mieux par la suite; j'ai laissé le script
exprès pour la modif.

Ça a été un jeu d'enfant d'adapter les dimensions et de supprimer
l'aliasing, merci encore.

--
capfree -

Doug713705

unread,
Jul 22, 2013, 3:45:16 AM7/22/13
to
Le 22-07-2013, capfree nous expliquait dans fr.comp.applications.libres :
>
> Pour finir, puis-je encore vous demander d'ajouter trois cercles
> concentriques et centrᅵs bien sᅵr aux environs des 2/3 du diamᅵtre?

Je ne comprends pas oᅵ doit ᅵtre situᅵ le centre des 3 cercles et dans
tous les cas il manque le diamᅵtre de chacun de ces cercles.

Un croquis mᅵme grossier m'aiderait grandement.

J'ai dᅵgotᅵ ᅵa mais ᅵa ne semble pas correspondre ᅵ ta demande :
http://www.teteamodeler.com/vip2/nouveaux/decouverte/fiche151.asp

Lucas Levrel

unread,
Jul 22, 2013, 4:12:05 AM7/22/13
to
Le 22 juillet 2013, capfree a ᅵcrit :

> Pour finir, puis-je encore vous demander d'ajouter trois cercles
> concentriques et centrᅵs bien sᅵr aux environs des 2/3 du diamᅵtre?
> Je les positionnerais au mieux par la suite; j'ai laissᅵ le script exprᅵs
> pour la modif.

file:///usr/share/doc/packages/ImageMagick/www/index.html
=>
file:///usr/share/doc/packages/ImageMagick/www/command-line-options.html#draw

(Oui, c'est bien file://, tu dois bien avoir la doc html installᅵe, non ?)

Est-ce que ᅵa aide ? Pour calculer l'abscisse du point pᅵriphᅵrique, par
exemple :

PX=$(echo "scale=10;$OX+$RAYON" | bc -l)

aprᅵs avoir introduit une variable RAYON !

--
LL

Nicolas George

unread,
Jul 22, 2013, 4:23:52 AM7/22/13
to
Doug713705 , dans le message
<63mrbax...@actarus.chainon-marquant.org>, a �crit�:
> #!/bin/bash
>
> FILE=~/asterisk.png # L'image
> TMP=$FILE.bak # Fichier de travail temporaire
<snip>

� ce niveau-l�, il vaudrait mieux utiliser quelque chose de plus haut
niveau, genre Cairo en Perl�:

perl -MCairo -e '
my $s = Cairo::ImageSurface->create("rgb24", 300, 300);
my $cr = Cairo::Context->create($s);
$cr->set_source_rgb(1, 0, 0);
$cr->set_line_width(3);
use constant PI => 4 * atan2(1, 1);
for my $i (0 .. 12) {
$cr->move_to(150, 150);
my $a = $i * PI / 6;
$cr->curve_to(150 + 50 * cos($a), 150 + 50 * sin($a),
150 + 100 * cos($a), 150 + 100 * sin($a),
150 + 140 * cos($a + PI / 9), 150 + 140 * sin($a + PI / 9));
$cr->stroke;
}
$s->write_to_png("output.png");
'

capfree

unread,
Jul 22, 2013, 10:03:22 AM7/22/13
to
Le 22/07/2013 09:45, Doug713705 a ᅵcrit :
> Le 22-07-2013, capfree nous expliquait dans fr.comp.applications.libres :
>>
>> Pour finir, puis-je encore vous demander d'ajouter trois cercles
>> concentriques et centrᅵs bien sᅵr aux environs des 2/3 du diamᅵtre?
>
> Je ne comprends pas oᅵ doit ᅵtre situᅵ le centre des 3 cercles et dans
> tous les cas il manque le diamᅵtre de chacun de ces cercles.
>
> Un croquis mᅵme grossier m'aiderait grandement.
>
> J'ai dᅵgotᅵ ᅵa mais ᅵa ne semble pas correspondre ᅵ ta demande :
> http://www.teteamodeler.com/vip2/nouveaux/decouverte/fiche151.asp
>

Voilᅵ la maquette, une fenᅵtre dans le disque ᅵ 22 secteurs laisse
apparaᅵtre une sᅵrie de dates du mois, mais je penserai plutᅵt ᅵ les
intervertir en plaᅵant les dates au centre.
Chiffres ᅵ inscrire avec Gimp, photocopie puis collage sur bristol.

Le plus grand cercle pour le dᅵcoupage, ᅵ 120 mm, 90 mm et le petit 70 mm

http://cjoint.com/data3/3GwpoGdVr1R_calend-perpet.jpg

* ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~

C'est une mnᅵmonique en vue de la mᅵditation quotidienne sur une saison
des 150 versets du psaume 119

--
capfree -

capfree

unread,
Jul 22, 2013, 10:05:56 AM7/22/13
to
Le 22/07/2013 10:12, Lucas Levrel a ᅵcrit :
Humm!...
J'ai ᅵtᅵ enchantᅵ du coup de main de Doug713705,
j'ai la tᅵte un /peu/ dure ᅵ 29000 jours rᅵvolus ;-)

--
capfree -

Nicolas George

unread,
Jul 22, 2013, 10:08:57 AM7/22/13
to
capfree , dans le message <51ed3bae$0$3737$426a...@news.free.fr>, a
�crit�:
> Chiffres � inscrire avec Gimp, photocopie puis collage sur bristol.

Il vaudrait mieux mettre les num�ros avec le m�me outil, ce sera infiniment
plus pr�cis. Et plus rapide, et plus maintenable.

> C'est une mn�monique en vue de la m�ditation quotidienne sur une saison
> des 150 versets du psaume 119

Hum...

Doug713705

unread,
Jul 23, 2013, 3:46:03 AM7/23/13
to
Le 22-07-2013, capfree nous expliquait dans fr.comp.applications.libres :

> Voilᅵ la maquette, une fenᅵtre dans le disque ᅵ 22 secteurs laisse
> apparaᅵtre une sᅵrie de dates du mois, mais je penserai plutᅵt ᅵ les
> intervertir en plaᅵant les dates au centre.
> Chiffres ᅵ inscrire avec Gimp, photocopie puis collage sur bristol.

Pour les inscriptions je te conseille Inkscape qui sera probablement
plus adaptᅵ que Gimp.

Nᅵanmoins la remarque de Nicolas Georges reste valable, un outil en
ligne de commande est probablement bien plus adaptᅵ par contre je laisse
la migraine ᅵ nos amis matheux pour les calculs des positions et
orientations.

Nicolas, si tu as quelques minutes, c'est l'occasion de nous faire un
cours magistral :-) Perso ᅵa dᅵpasse mes maigres connaissances en
mathᅵmatiques.

> Le plus grand cercle pour le dᅵcoupage, ᅵ 120 mm, 90 mm et le petit 70 mm
>
> http://cjoint.com/data3/3GwpoGdVr1R_calend-perpet.jpg
>
> * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~
>
> C'est une mnᅵmonique en vue de la mᅵditation quotidienne sur une saison
> des 150 versets du psaume 119

'Pas ma tasse de thᅵ mais chacun fait ce qu'il veut de sa conscience ;-)

Voici donc le script modifiᅵ qui devrait convenir ᅵ ton usage :

############################################################################


#!/bin/bash

FILE=~/test/asterisk.png # L'image
TMP=$FILE.bak # Fichier de travail temporaire

IMAGE_WIDTH=1024 # Largeur de l'image
IMAGE_HEIGHT=1024 # Hauteur de l'image

NUM_ARMS=31 # Nombre de branches

R=400 # Longueur du rayon des branches de l'ᅵtoile
LINE_WIDTH=5 # Largeur des branches de l'ᅵtoile
LINE_COLOR=#000 # Couleur des lignes (format HTML)

DEG=$(echo "scale=15;(360/$NUM_ARMS)" | bc) # Angle entre rayons
PI=$(echo "scale=10; 4*a(1)" | bc -l) # Pi

OX=$(echo "scale=10;$IMAGE_WIDTH/2" | bc) # Abscisse X du centre de l'image
OY=$(echo "scale=10;$IMAGE_HEIGHT/2" | bc) # Ordonnᅵe Y du centre de l'image

FILL_COLOR=white # Couleur de remplissage des disques
CELL_HEIGHT=50 # Hauteur des cellules


############################################################################
# Ne rien modifier au delᅵ de cette ligne
############################################################################

RC1=$(echo "scale=2;$OX+$R" | bc -l) # Rayon du cercle 1 (le plus grand)
RC2=$(echo "scale=2;$OX+$R-$CELL_HEIGHT" | bc -l) # Rayon du cercle 2
RC3=$(echo "scale=2;$RC2-$CELL_HEIGHT" | bc -l) # Rayon du cercle 3
RC4=$(echo "scale=2;$RC3-$CELL_HEIGHT" | bc -l) # Rayon du cercle 4 (le plus petit)

rm $FILE $TMP 2>/dev/null

convert -size $IMAGE_WIDTH"x"$IMAGE_HEIGHT xc:transparent -fill transparent $FILE

echo "Cercle 1 : $OX,$OY $RC1,$OY "
convert -stroke $LINE_COLOR -fill $FILL_COLOR -strokewidth $LINE_WIDTH -draw "circle $OX,$OY $RC1,$OY" $FILE $TMP

echo "Cercle 2 : $OX,$OY $RC2,$OY "
convert -stroke $LINE_COLOR -fill $FILL_COLOR -strokewidth $LINE_WIDTH -draw "circle $OX,$OY $RC2,$OY" $TMP $FILE

echo "Cercle 3 : $OX,$OY $RC3,$OY "
convert -stroke $LINE_COLOR -fill $FILL_COLOR -strokewidth $LINE_WIDTH -draw "circle $OX,$OY $RC3,$OY" $FILE $TMP

mv $TMP $FILE

for I in $(seq 1 $NUM_ARMS)
do
ANGLE=$(echo "scale=10;$I*$DEG" | bc)
PX=$(echo "scale=10;$R*c($PI*$ANGLE/180)+$OX" | bc -l)
PY=$(echo "scale=10;$R*s($PI*$ANGLE/180)+$OY" | bc -l)

echo "Ligne nᅵ $I ($OX, $OY | $PX,$PY |ᅵ$ANGLE | $LINE_COLOR)"

convert -stroke $LINE_COLOR -strokewidth $LINE_WIDTH -draw "line $OX,$OY $PX,$PY" $FILE $TMP
mv $TMP $FILE
done

echo "Cercle 4 : $OX,$OY $RC4,$OY "
# Le disque qui masque le coeur de l'ᅵtoile
convert -stroke $LINE_COLOR -fill $FILL_COLOR -strokewidth $LINE_WIDTH -draw "circle $OX,$OY $RC4,$OY" $FILE $TMP

mv $TMP $FILE

############################################################################

Lucas Levrel

unread,
Jul 23, 2013, 4:01:42 AM7/23/13
to
Le 22 juillet 2013, capfree a ᅵcrit :

> Humm!...
> J'ai ᅵtᅵ enchantᅵ du coup de main de Doug713705,
> j'ai la tᅵte un /peu/ dure ᅵ 29000 jours rᅵvolus ;-)

Bon, je suppose que ᅵa veut dire non. Voici une version revue (mogrify
au lieu de convert permet de se passer de temporaire) et augmentᅵe.
J'ai mis une boucle pour les rayons pour crᅵner un peu, mais une
rᅵpᅵtition des deux lignes utiles aurait suffi.


#!/bin/bash

FILE=~/asterisk.png # L'image

IMAGE_WIDTH=300 # Largeur de l'image
IMAGE_HEIGHT=300 # Hauteur de l'image

NUM_ARMS=31 # Nombre de branches

R=150 # Longueur du rayon des branches de l'ᅵtoile
R1=150 # Rayon des trois cercles
R2=112
R3=87

LINE_WIDTH=5 # Largeur des branches de l'ᅵtoile
LINE_COLOR=#000

#*************************************************
# Ne plus rien toucher en dessous de cette ligne
#*************************************************

DEG=$(echo "scale=15;(360/$NUM_ARMS)" | bc) # Angle entre rayons
PI=$(echo "scale=10; 4*a(1)" | bc -l) # Pi

OX=$(echo "scale=10;$IMAGE_WIDTH/2" | bc) # Coordonnᅵe X du centre de l'image
OY=$(echo "scale=10;$IMAGE_HEIGHT/2" | bc) # Coordonnᅵe Y du centre de l'image

rm $FILE 2>/dev/null

convert -size $IMAGE_WIDTH"x"$IMAGE_HEIGHT xc:transparent -fill
transparent $FILE

for I in $(seq 1 $NUM_ARMS)
do
ANGLE=$(echo "scale=10;$I*$DEG" | bc)
PX=$(echo "scale=10;$R*c($PI*$ANGLE/180)+$OX" | bc -l)
PY=$(echo "scale=10;$R*s($PI*$ANGLE/180)+$OY" | bc -l)

echo "Branche nᅵ $I ($OX, $OY | $PX,$PY |ᅵ$ANGLE)"

mogrify -stroke $LINE_COLOR -strokewidth $LINE_WIDTH -draw "line
$OX,$OY $PX,$PY" $FILE
done

for i in R{1..3}
do
PX=$(echo "scale=10;$OX+${!i}" | bc -l)
mogrify -stroke $LINE_COLOR -strokewidth $LINE_WIDTH -fill none
-draw "circle $OX,$OY $PX,$OY" $FILE
done


--
LL

Doug713705

unread,
Jul 23, 2013, 3:59:35 AM7/23/13
to
Le 22-07-2013, Nicolas George nous expliquait dans fr.comp.applications.libres :
>
> ᅵ ce niveau-lᅵ, il vaudrait mieux utiliser quelque chose de plus haut
> niveau, genre Cairo en Perl.

Oui, perso j'aurai optᅵ pour le Python parce que je ne lit pas bien les
hiᅵroglyphes ;-) mais je suis d'accord.

Toutefois j'avais anticipᅵ les lacunes probables de l'OP en la matiᅵre.

> my $s = Cairo::ImageSurface->create("rgb24", 300, 300);
> my $cr = Cairo::Context->create($s);

Mᅵme si elles ne sont pas complexes en tant que telles, ces 2 lignes
demandent nᅵanmoins de connaitre la syntaxe perl, de savoir qu'une
bibliothᅵque de manipulation d'images adaptᅵe au besoin existe, que
cette derniᅵre s'appelle Cairo et bien entendu il faut savoir utiliser
cette bibliothᅵque. Et je ne te parle pas de l'utilisation de cpan...

ᅵ mon avis ᅵa fait beaucoup de prᅵ-supposᅵs.

Doug713705

unread,
Jul 23, 2013, 4:18:10 AM7/23/13
to
Le 23-07-2013, Lucas Levrel nous expliquait dans fr.comp.applications.libres :

> mogrify au lieu de convert permet de se passer de temporaire

Ah, voilᅵ, ᅵa me paraissait bizarre de passer par un fichier temporaire !

Nicolas George

unread,
Jul 24, 2013, 4:44:05 AM7/24/13
to
Doug713705 , dans le message
<ruo1cax...@actarus.chainon-marquant.org>, a écrit :
> Néanmoins la remarque de Nicolas Georges reste valable, un outil en
> ligne de commande est probablement bien plus adapté par contre je laisse
> la migraine à nos amis matheux pour les calculs des positions et
> orientations.

La plupart des bibliothèques ou langages de dessin vectoriel fournissent des
primitives pour appliquer des transformations géométriques aux formes, à
commencer par des rotations et des translations. Ça permet de laisser au
logiciel le soin de faire la trigo nécessaire. De toutes façons, pour du
rendu de texte, on ne peut pas vraiment faire sans.

Dans le cas présent, ça demanderait les opérations suivantes :

- translation de (150,150), pour placer le (0,0) au centre de l'image ;

- rotation de p n-ièmes de tour (autour de l'origine) ;

- écrire le texte en (0,-r) si on veut que le bas des caractères soit
orienté vers le centre.

Avec quelques tâtonnements on arrive à ce qu'on veut.

En Perl/Cairo, ça s'écrirait :

$cr->translate(150, 150);
$cr->rotate(2 * PI * $p / $n);
$cr->move_to(0, -130);

Ce qui reste souvent à la charge de l'utilisateur, c'est le placement fin du
texte. Par exemple, pour Cairo, le texte est toujours dessiné en plaçant le
début de sa ligne de base au point courant. Si on veut centrer, il faut
faire l'arithmétique soi-même, mais ce n'est pas très difficile : il suffit
d'utiliser text_extents pour connaître la taille du texte, et de se déplacer
de la moitié vers la gauche.

my $ext = $cr->text_extents($text);
$cr->rel_move_to(-0.5 * $ext->{x_advance});

Nicolas George

unread,
Jul 24, 2013, 5:01:41 AM7/24/13
to
Doug713705 , dans le message
<7op1cax...@actarus.chainon-marquant.org>, a écrit :
> Oui, perso j'aurai opté pour le Python parce que je ne lit pas bien les
> hiéroglyphes ;-) mais je suis d'accord.

Personnellement, j'ai du mal à lire de la sémantique dans les espaces, et
j'ai encore plus de mal avec les régimes dictatoriaux, tout particulièrement
quand le dictateur a des idées baroques sur la bonne manière de faire.

Et puis bon, question hiéroglyphes, le shell, que tu as utilisé, se pose un
peu là... Au moins, en Perl, la sémantique des hiéroglyphes est bien définie
et assez robuste.

> Même si elles ne sont pas complexes en tant que telles, ces 2 lignes
> demandent néanmoins de connaitre la syntaxe perl, de savoir qu'une
> bibliothèque de manipulation d'images adaptée au besoin existe, que

Ta proposition demande de connaître la syntaxe des opérations de dessin
d'ImageMagick, à commencer par le fait qu'elles existent.

> cette dernière s'appelle Cairo et bien entendu il faut savoir utiliser

Ça, c'est précisément l'objet d'un message dans les News. Et la bibal a une
doc.

> cette bibliothèque. Et je ne te parle pas de l'utilisation de cpan...

Ah, à force d'utiliser Debian depuis plus de dix ans, j'oublie que dans le
quart-monde informatique, installer Cairo pour Perl est plus compliqué qu'un
simple « sudo apt-get install libcairo-perl ».

Sinon, une autre suggestion que j'aurais pu faire, et qui est plutôt bien
adaptée ici je pense : TikZ. Ça produit du PDF, mais convertir le PDF en
bitmap est facile, et si c'est pour imprimer, le PDF est plus adapté de
toutes façons. En l'occurrence, ça aurait donné quelque chose comme ça (pas
testé) :

\begin{tikzpicture}[shift={(5,5)}]
\draw (0,0) circle (4);
\draw (0,0) circle (5);
\foreach \i in {0,...,29} {
\draw (0,0) -- (360*\i/30:5);
}
\end{tikzpicture}

Pour placer du texte avec les caractères tournés, c'est un peu plus
technique. Je pense que le plus simple est de tracer une ligne invisible
entre deux points et d'écrire le texte suivant cette ligne :

\path (360*\i/30:4.2) -- (360*(\i+1)/30:4.2)
node[pos=0.5,sloped] {\i};

Doug713705

unread,
Jul 24, 2013, 5:24:26 AM7/24/13
to
Le 24-07-2013, Nicolas George nous expliquait dans fr.comp.applications.libres :

> Dans le cas prᅵsent, ᅵa demanderait les opᅵrations suivantesᅵ:
>
> - translation de (150,150), pour placer le (0,0) au centre de l'imageᅵ;
>
> - rotation de p n-iᅵmes de tour (autour de l'origine)ᅵ;
>
> - ᅵcrire le texte en (0,-r) si on veut que le bas des caractᅵres soit
> orientᅵ vers le centre.

En effet avec les ᅵtapes dans cet ordre c'est beaucoup plus simple.
Pour une raison indᅵterminᅵe j'entrevoyais dᅵjᅵ des calculs
trigonomᅵtriques hors de ma portᅵe..

Doug713705

unread,
Jul 24, 2013, 5:41:15 AM7/24/13
to
Le 24-07-2013, Nicolas George nous expliquait dans fr.comp.applications.libres :
> Doug713705 , dans le message
><7op1cax...@actarus.chainon-marquant.org>, a ᅵcritᅵ:
>> Oui, perso j'aurai optᅵ pour le Python parce que je ne lit pas bien les
>> hiᅵroglyphes ;-) mais je suis d'accord.
>
> Personnellement, j'ai du mal ᅵ lire de la sᅵmantique dans les espaces, et
> j'ai encore plus de mal avec les rᅵgimes dictatoriaux, tout particuliᅵrement
> quand le dictateur a des idᅵes baroques sur la bonne maniᅵre de faire.
>
> Et puis bon, question hiᅵroglyphes, le shell, que tu as utilisᅵ, se pose un
> peu lᅵ...

Pas faux.

> Au moins, en Perl, la sᅵmantique des hiᅵroglyphes est bien dᅵfinie
> et assez robuste.

J'avoue ne jamais avoir pris la peine d'ᅵtudier correctement le Perl, sa
syntaxe m'ayant rebutᅵ au dᅵpart.
Par contre je n'ai jamais doutᅵ de son efficacitᅵ.

>> Mᅵme si elles ne sont pas complexes en tant que telles, ces 2 lignes
>> demandent nᅵanmoins de connaitre la syntaxe perl, de savoir qu'une
>> bibliothᅵque de manipulation d'images adaptᅵe au besoin existe, que
>
>
> Ta proposition demande de connaᅵtre la syntaxe des opᅵrations de dessin
> d'ImageMagick, ᅵ commencer par le fait qu'elles existent.

ᅵa reste nᅵanmoins plus "humainement lisible".

>> cette derniᅵre s'appelle Cairo et bien entendu il faut savoir utiliser
>
> ᅵa, c'est prᅵcisᅵment l'objet d'un message dans les News. Et la bibal a une
> doc.
>
>> cette bibliothᅵque. Et je ne te parle pas de l'utilisation de cpan...
>
> Ah, ᅵ force d'utiliser Debian depuis plus de dix ans, j'oublie que dans le
> quart-monde informatique, installer Cairo pour Perl est plus compliquᅵ qu'un
> simple ᅵᅵsudo apt-get install libcairo-perlᅵᅵ.

Rhoooo... :-)
Je disais ᅵa uniquement parce que j'ᅵtais restᅵ sur mes vieux souvenirs
de bataille avec cpan.

Aprᅵs vᅵrification perl-cairo est fourni sous forme de paquet ᅵ
compiler pour Slackware (via sbopkg).

> Sinon, une autre suggestion que j'aurais pu faire, et qui est plutᅵt bien
> adaptᅵe ici je penseᅵ: TikZ. ᅵa produit du PDF, mais convertir le PDF en
> bitmap est facile, et si c'est pour imprimer, le PDF est plus adaptᅵ de
> toutes faᅵons. En l'occurrence, ᅵa aurait donnᅵ quelque chose comme ᅵa (pas
> testᅵ)ᅵ:
>
> \begin{tikzpicture}[shift={(5,5)}]
> \draw (0,0) circle (4);
> \draw (0,0) circle (5);
> \foreach \i in {0,...,29} {
> \draw (0,0) -- (360*\i/30:5);
> }
> \end{tikzpicture}
>
> Pour placer du texte avec les caractᅵres tournᅵs, c'est un peu plus
> technique. Je pense que le plus simple est de tracer une ligne invisible
> entre deux points et d'ᅵcrire le texte suivant cette ligneᅵ:
>
> \path (360*\i/30:4.2) -- (360*(\i+1)/30:4.2)
> node[pos=0.5,sloped] {\i};

Depuis le temps que je me dit qu'il faut que je me mette ᅵ TeX et Cie...

Nicolas George

unread,
Jul 24, 2013, 6:11:24 AM7/24/13
to
Doug713705 , dans le message
<a3j4cax...@actarus.chainon-marquant.org>, a écrit :
> Pour une raison indéterminée j'entrevoyais déjà des calculs
> trigonométriques hors de ma portée..

Les calculs trigonométriques en jeu ne sont pas très complexes : tu sais
déjà que pour avoir un trait de longueur 1 tourné d'un angle a en radians,
les coordonnées sont (cos(a), sin(a)). Pour avoir le même trait à angle
droit, c'est simplement (-sin(a), cos(a)).

Ça te donne un repère tourné de l'angle a, qu'on peut appeler u et v, et il
suffit de faire un changement de repère : si tu veux un vecteur P de
coordonnées (x, y) dans ce repère, et avoir ses vraies coordonnées, il
suffit d'écrire P = x u + y v, et décomposer suivant les coordonnées.

Le truc, c'est qu'il n'y a souvent pas de moyen simple d'interfacer ça avec
les primitives de dessin de texte, donc ça ne sert pas à grand chose.
0 new messages