Comment produire des illustrations 2D simples pour accompagner les réponses géométriques?

14

Dans ma réponse sur Affine Transformations, j'ai fait quelques petites illustrations pour aider l'explication.

Comment créer rapidement un PNG téléchargeable qui exprime une idée géométrique ou mathématique?

Cette question a été conçue pour soutenir ma réponse PostScript mais est destinée à solliciter d'autres solutions qui pourraient bénéficier au réseau SE plus généralement. Mais pour la crédibilité, une réponse doit être liée à un article où cette technique a en fait été utilisée, ainsi qu'à une partie "howto" suffisante si elle implique plus que quelque chose d'évident comme "Select export from menu".

Il y a deux méta-questions ici et ici concernant la façon d'étendre cette question à la lumière des précédents qu'elle peut établir pour notre site.

luser droog
la source
2
Personnellement, je vois cette question plus sur PostScript que sur l'infographie.
cifz
1
@cifz droit ce cadrerait GD.SE mieux. Mais ce n'est pas une raison pour laquelle il ne peut pas être ici.
joojaa
@citz Je pense que je vois ce que tu veux dire. Et si je le retirais de la question et l'ouvrais pour le tikz et l'asymptote et ainsi de suite.
luser droog
Je réponds ici pour montrer que c'est un peu une opinion, et les réponses le seront certainement. Peut - être que ce fil de discussion devrait vivre dans notre Meta, comme cela ne le GD.SE . Toutes pensées, @cifz
joojaa

Réponses:

13

J'utilise une variété d'outils en fonction des besoins particuliers du moment. J'ai un penchant pour les outils gratuits, car je n'ai pas accès à des choses comme Illustrator ou Mathematica.

À des fins d'art vectoriel général, j'utilise le logiciel gratuit Inkscape . Il fonctionne sur des fichiers .svg et peut également les rendre sous forme de fichiers .pngs de haute qualité ou d'autres formats bitmap. Par exemple, voici un diagramme que j'ai fait dans Inkscape pour expliquer le mappage UV :

Pour les graphiques de fonctions 2D, j'utilise souvent la calculatrice graphique en ligne Desmos , qui a la capacité pratique de vous permettre de partager des graphiques en ligne afin que d'autres puissent les visualiser et les modifier. Vous pouvez également créer des curseurs qui peuvent être modifiés pour jouer avec les paramètres de courbe en temps réel. Par exemple, voici une fonction d'affûtage configurable .

Pour les tâches graphiques plus complexes qui impliquent un peu de programmation, j'utilise Maxima , un système d'algèbre informatique gratuit qui a également des fonctionnalités graphiques. J'ai utilisé Maxima pour créer les graphiques dans cette réponse sur les flous gaussiens :

C'était un peu trop complexe pour Desmos, car cela impliquait de créer par programme une approximation par morceaux d'un gaussien.

Pour les tâches graphiques très étranges qui ne sont pas bien gérées par quoi que ce soit d'autre, j'ai utilisé Python avec le package svgwrite pour générer par programme des diagrammes dans des fichiers .svg. Ceux-ci peuvent ensuite être retouchés dans Inkscape si vous le souhaitez et rendus en bitmaps à l'aide d'Inkscape ou d'ImageMagick. J'ai utilisé ce flux de travail pour créer les images de ce billet de blog sur la précision de la profondeur , comme ceci:

Dans ce cas, je voulais non seulement représenter graphiquement une fonction, mais également placer des graduations par programme et de manière non uniforme le long des axes et du graphique, pour illustrer des valeurs de tampon de profondeur discrètes.

Et enfin, si rien d'autre ne suffit, j'utiliserai Python avec numpy et oreiller pour rendre les images pixel par pixel. C'est ainsi que j'ai créé les images de bruit Perlin dans cette réponse (avec l'aide du paquet de bruit aussi, dans ce cas).

Nathan Reed
la source
Nathan, c'est toi qui a écrit ça sur la précision de la profondeur? Wow cool ... j'ai lu ce truc et ça m'a beaucoup aidé! petit monde: P
Alan Wolfe
12

Personnellement, mon choix de poison est Adobe Illustrator. D'autres applications telles que inkscape, Corel Draw, Xara Designer feront également l'affaire. À la rigueur, même PowerPoint fonctionnera. Bien que je ne recommande pas personnellement PowerPoint en raison de graves problèmes avec son modèle de données, même difficile est probablement l'application de dessin la plus déployée au monde.

Il peut également être judicieux d'avoir une application graphique à portée de main. J'utilise personnellement Mathematica pour cela, bien que de nombreuses autres applications fonctionnent également. Ou si vous le souhaitez, vous pouvez utiliser Wolfram alpha, une version en ligne gratuite de mathématique.

Avertissement: Parce que les exemples sont les miens et que l'auto-approbation sans vergogne prend une pincée de sel.

Illustrateur

La première chose à faire dans une application de dessin vectoriel est d' activer la grille d'accrochage . Cela réduit la difficulté de placer des lignes avec précision. L'une des principales raisons pour lesquelles je n'aime pas utiliser Inkscape est la façon inférieure dont il implémente cette capture. PowerPoint est en fait livré avec un accrochage à la grille par défaut.

Je ne suis pas vraiment satisfait d'Illustrator car il ne répond pas à tous mes besoins. Mais aucun logiciel jusqu'à présent ne le fait (Maya remplissait ce créneau mais ensuite Autodesk est arrivé).

La deuxième raison pour laquelle je choisis Illustrator est qu'il comprend nativement le postscript. Donc, si je dois programmer quelque chose, je peux le faire rapidement et la mise à jour des documents existants à mesure que mon code mûrit Image 3 se fait de cette façon.

  • Ressource montrant un accès instantané, postscript et java script à l'illustrateur et des liens vers l'avant.

Voici quelques exemples de dessins que j'ai réalisés sur le réseau avec Illustrator, principalement par la puissance de l'accrochage à la grille:

Marche circulaire

Image 1 : L'une des nombreuses images que j'ai dessinées dans l'illustrateur sur ce site. Remarque: je suis un illustrateur assez expérimenté (parfois commercial) et c'est extrêmement simple selon mes normes.

L'image de marche du cercle est assez simple à faire. Dessinez simplement une forme aléatoire en cliquant autour. Après cela, désactivez l'accrochage et laissez les guides intelligents faire votre travail pour vous. Tracez des lignes au point le plus proche sur la ligne, faites des cercles sur la ligne et (j'ai supprimé les lignes de guidage après avoir terminé). Rincez et répétez. Il m'a fallu environ 3 à 5 minutes pour dessiner l'image une fois mon espace de travail démarré.

Vague de continuation

Image 2 : GD.SE vague de continuation .

Bien que cette image semble beaucoup plus élaborée, son travail n'est pas beaucoup plus que la première image. Il est plus technique, donc en plus de l'accrochage à la grille I et utilise désormais la touche Maj pour contraindre les lignes à des angles de 45 degrés. Les remplissages de hachures sont facilement attribués aux régions avec l'outil de création de forme d'illustrator. (exemple de générateur de forme utilisé , capture d'écran)

image tétra

Image 3 : Parfois, il est plus facile de recommencer à zéro dans le post-scriptum. Image ajoutée pour poster sur ENG.SE .

Enfin une image qui est vraiment plus facile à faire en tapant les valeurs en postscript. C'est relativement facile à faire en postscript. J'ai encore fait la typographie dans l'illustrateur. Bien que le dessiner à la main ne soit pas un problème, je préfère ne pas le faire, mais je le ferai si je dois faire un jugement à l'œil nu.

Mathematica

Mathematica est merveilleux si vous voulez explorer un peu plus les choses. Le seul inconvénient de Mathematica est qu'il n'est PAS bon marché. Mais il peut faire presque n'importe quoi rapidement. J'ai utilisé Mathematica pour certaines de mes photos sur une base de nurbs .

L'une des compétences de base de Mathematicas est qu'il est facile de développer des images même assez complexes sans trop de tracas. Il peut également animer facilement votre image simple dans votre éditeur .

Graphics[{
    orig = {
        Table[
            GeometricTransformation[
                Line[{{0, 0}, {50, 0}}],
            RotationTransform[ang]],
            {ang, 0, 3 Pi/2, Pi/2}
        ],
        Line[{{20, 0}, {30, 20}, {40, 0}}]
    },
    Red,
    GeometricTransformation[
        orig,
        RotationTransform[Pi/6]
    ]
}]

Résultats dans la même image que les autres. L'enrouler dans une table selon les résultats:

entrez la description de l'image ici

Image 4 : L'animation est simple à faire dans l'éditeur de code à l'aide de Mathematica.

joojaa
la source
4

PostScript + ps2eps + mogrify

Pour la réponse Affine Transformations , j'ai écrit un très petit programme postscript, puis enregistré plusieurs copies sous des noms différents et édité chacun pour effectuer chaque tâche différente: redimensionner, traduire, faire pivoter. Par exemple, voici celui de base, ident.psqui ne change rien aux coordonnées entre le dessin rouge et le dessin noir. J'ai agrandi les lignes rouges et je les dessine toujours en premier, donc les deux apparaissent bien superposées et visibles (IMO). J'ai prévisualisé avec ghostscript avec la commande vi (ex) :!gs %. ( tous les fichiers source )

%!
/axis {
    currentpoint 4 { 
        2 copy moveto
            50 0 lineto
            90 rotate
    } repeat pop pop 
} def 
/shape {
    20 0 moveto
    30 20 lineto
    40 0 lineto
    closepath
} def 

100 100 translate

gsave
% do transform here
currentlinewidth 1.5 mul setlinewidth
1 0 0 setrgbcolor
0 0 moveto axis shape stroke
grestore

0 0 moveto axis shape stroke

showpage

J'ai ensuite utilisé la ps2epscommande de psutilspour calculer automatiquement les boîtes englobantes

$ ps2eps -f *.ps
Input files: ident.ps rotate.ps scale.ps skewx.ps skewy.ps translate.ps
Processing: ident.ps
Calculating Bounding Box...ready. %%BoundingBox: 50 50 150 150
Creating output file ident.eps ... ** Warning **: Weird heading line -- %! -- ready.
Processing: rotate.ps
Calculating Bounding Box...ready. %%BoundingBox: 50 50 150 150
Creating output file rotate.eps ... ** Warning **: Weird heading line -- %! -- ready.
Processing: scale.ps
Calculating Bounding Box...ready. %%BoundingBox: 25 25 175 175
Creating output file scale.eps ... ** Warning **: Weird heading line -- %! -- ready.
Processing: skewx.ps
Calculating Bounding Box...ready. %%BoundingBox: 50 49 150 151
Creating output file skewx.eps ... ** Warning **: Weird heading line -- %! -- ready.
Processing: skewy.ps
Calculating Bounding Box...ready. %%BoundingBox: 49 50 151 150
Creating output file skewy.eps ... ** Warning **: Weird heading line -- %! -- ready.
Processing: translate.ps
Calculating Bounding Box...ready. %%BoundingBox: 50 50 165 165
Creating output file translate.eps ... ** Warning **: Weird heading line -- %! -- ready.

Et enfin utilisé la convertcommande imagemagick pour produire des images png recadrées. (Je n'ai pas pensé à un moyen rapide d'automatiser cette partie. Edit: comme commenté, cela peut être fait avec mogrify -format png *.eps. Merci, joojaa!)

$ convert ident.eps ident.png

josh@cadabra ~/affine
$ convert scale.eps scale.png

josh@cadabra ~/affine
$ convert rotate.eps rotate.png

josh@cadabra ~/affine
$ convert skewx.eps skewx.png

josh@cadabra ~/affine
$ convert translate.eps translate.png

josh@cadabra ~/affine
$ convert skewy.eps skewy.png

Qui produit des fichiers PNG, prêts à être téléchargés.

$ ls -l *.png
-rw-r--r-- 1 josh None  587 Sep  1 21:16 ident.png
-rw-r--r-- 1 josh None 1431 Sep  1 21:21 rotate.png
-rw-r--r-- 1 josh None  798 Sep  1 21:19 scale.png
-rw-r--r-- 1 josh None 1133 Sep  1 21:22 skewx.png
-rw-r--r-- 1 josh None 1197 Sep  1 21:23 skewy.png
-rw-r--r-- 1 josh None  756 Sep  1 21:23 translate.png

luser droog
la source
Je ne vois pas vraiment l'intérêt de générer l'encapsulation avec ps2eps, il suffit de taper l'en-tête eps dans votre modèle. Cela rend l'instruction plus propre (et l'utilisateur a besoin de moins de dépendances). Au lieu de convertir chaque fichier séparément, faitesmogrify -format png *.eps
joojaa
Cool. Je n'en savais rien mogrify. Pour la ps2epspièce, il calcule (et ajoute) automatiquement les informations du cadre de sélection. L'omission de cette partie convertproduira des images pleine page
luser droog
4

J'utilise juste Powerpoint pour faire de tels diagrammes et cela fonctionne très bien dès que vous êtes à l'aise avec ses primitives de base. Il prend en charge toutes les opérations simples comme la rotation, la translation, etc. et les révisions récentes ont également des transformations de cisaillement et 3D. Exemples:

entrez la description de l'image ici

entrez la description de l'image ici

Voici un exemple d'un diagramme Powerpoint que j'ai fait pour une réponse.

Pour des diagrammes plus compliqués, en particulier en 3D, j'utilise parfois Blender avec des matériaux sans ombre. Je peux élaborer et montrer des exemples si cela correspond à votre question.

On dirait que jsfiddle est également populaire ici.

ap_
la source
Je suis d'accord --- ma réponse n'est probablement plus valable car je n'ai pas utilisé de diagrammes dans les réponses jusqu'à présent. Mais je m'attends à ce que cela se produise bientôt. Donc, si ça va pour que cette réponse reste pendant quelques jours, je suis sûr que je serai en mesure de trouver une réponse.
2015
Terminé! Ma réponse devrait être valide maintenant.
ap_
Excellent. Suppression de mes commentaires précédents.
luser droog
4

Ce n'est pas la boîte à outils définitive que vous recherchez peut-être, mais juste un outil supplémentaire que j'utilise moi-même: pour les graphiques 3D, Blender peut être utile. Surtout si vous utilisez le plugin Export_SVG (disponible sur http://dl.dropbox.com/u/16486113/Blender/archivos/temp/SVG/export_svg.py et http://blenderartists.org/forum/showthread.php? 282824-SVG-script de sortie )

Cela vous permet d'obtenir des objets Blenders 3D sous forme de graphiques vectoriels dans Illustrator ou Inkscape. Je trouve que cela me donne un bon début rapide pour créer des illustrations 3D simples .

Permettez-moi de coller un exemple. (Dans cet exemple, j'utilise beaucoup de couleurs, mais bien sûr, tout peut être fait en noir et rouge sur blanc à la place)

entrez la description de l'image ici

Idéogramme
la source
vous voulez sûrement dire illustrateur et inkscape (au lieu d'illustrateur et illustrateur)
joojaa
Bien sûr! Tnx!
Idéogramme du
1

J'utilise Powerpoint et divers packages CAO (chers). J'ai écrit des macros Powerpoint (code VBA) pour faire des choses spéciales comme dessiner les polygones de contrôle des courbes de Bézier. Ensuite, j'utilise l'outil de capture Windows standard pour saisir des captures d'écran. Voici quelques exemples:

entrez la description de l'image ici

entrez la description de l'image ici

entrez la description de l'image ici

entrez la description de l'image ici

Et quelques autres exemples de Math.SE

Un
deux
trois
quatre
cinq

bubba
la source
Powerpoint est en fait assez cher compte tenu des choses. C'est ok, après tout, la compétence en dessin vient de vous. Mais au moins tikz, inkscape, blrnder et postscript sont bien moins chers que powerpoint.
joojaa
Je suis vieux, donc le temps est plus important pour moi que l'argent. Inkscape est bon, mais il n'y a aucun moyen que je passe du temps à écrire du tikz ou du code Postscript pour produire des images.
bubba