Come produrre semplici illustrazioni 2D per accompagnare le risposte della geometria?


14

Nella mia risposta sulle trasformazioni affine ho fatto alcune piccole illustrazioni per aiutare la spiegazione.

Come si crea rapidamente un PNG in grado di caricare che esprima un'idea geometrica o matematica?

Questa domanda è stata concepita per supportare la mia risposta PostScript, ma ha lo scopo di sollecitare altre soluzioni che potrebbero avvantaggiare la rete SE in generale. Ma per credibilità, una risposta deve essere collegata a un post in cui questa tecnica è stata effettivamente utilizzata, nonché una porzione "howto" sufficiente se coinvolge qualcosa di più di qualcosa di ovvio come "Seleziona esportazione dal menu".

Ci sono due meta domande qui e qui su come estendere questa domanda alla luce delle precedenti che può essere impostata per il nostro sito.


2
Personalmente vedo questa domanda più su PostScript che su computer grafica.
cifz,

1
@cifz giusto questo si adatterebbe meglio a GD.SE. Ma questo non è un motivo per cui non può essere qui.
joojaa,

@citz Penso di vedere cosa intendi. E se lo togliessi dalla domanda, e lo apro per tikz, asintoto e quant'altro.
Luser droog

Sto rispondendo qui per dimostrare che questo è un po 'supponente come una domanda, e sicuramente le risposte lo saranno. Forse questo intero thread dovrebbe vivere nella nostra Meta, come questo fa su GD.SE . Qualsiasi pensiero, @cifz
joojaa,

Risposte:


13

Uso una varietà di strumenti a seconda delle esigenze specifiche del momento. Ho una propensione per gli strumenti gratuiti, in quanto non ho accesso a cose come Illustrator o Mathematica.

Per scopi di grafica vettoriale generale utilizzo Inkscape gratuito . Funziona su file .svg e può anche renderli come .pngs di alta qualità o altri formati bitmap. Ad esempio, ecco un diagramma che ho realizzato in Inkscape per spiegare la mappatura UV :

Per i grafici di funzioni 2D, utilizzo spesso il calcolatore di grafici online Desmos , che ha la pratica funzionalità di consentire la condivisione di grafici online in modo che altri possano visualizzarli e modificarli. Puoi anche creare cursori che possono essere variati per giocare con i parametri della curva in tempo reale. Ad esempio, ecco una funzione di nitidezza configurabile .

Per attività grafiche più complesse che implicano un po 'di programmazione, utilizzo Maxima , un sistema di algebra del computer gratuito che ha anche funzioni grafiche. Ho usato Maxima per creare i grafici in questa risposta sulle sfocature gaussiane :

Questo era un po 'troppo complesso per Desmos, poiché implicava la creazione programmatica di un'approssimazione a tratti di un gaussiano.

Per attività grafiche davvero strane che non sono gestite bene da nient'altro, ho usato Python con il pacchetto svgwrite per generare programmaticamente diagrammi in file .svg. Questi possono quindi essere ritoccati in Inkscape, se desiderato, e renderizzati in bitmap usando Inkscape o ImageMagick. Ho usato quel flusso di lavoro per creare le immagini in questo post sul blog sulla precisione della profondità , in questo modo:

In questo caso volevo non solo rappresentare graficamente una funzione, ma posizionare i segni di spunta in modo programmatico e non uniforme lungo entrambi gli assi e il grafico, per illustrare i valori del buffer di profondità discreti.

E infine, se non altro, userò Python con intorpidimento e cuscino per rendere le immagini pixel per pixel. È così che ho creato le immagini del rumore Perlin in questa risposta (anche con l'aiuto del pacchetto rumore , in questo caso).


Nathan, sei tu quello che l'ha scritto sulla precisione della profondità? Caspita ... ho letto quella cosa e mi ha aiutato molto! piccolo mondo: P
Alan Wolfe,

12

Personalmente la mia scelta di veleno è Adobe Illustrator. Anche altre app come Inkscape, Corel Draw, Xara Designer lo faranno. In un pizzico anche PowerPoint funzionerà. Anche se non consiglio personalmente PowerPoint a causa di gravi problemi con il suo modello di dati, anche l'applicazione di disegno più distribuita al mondo è difficile.

Può anche essere una buona idea avere un'applicazione grafica a portata di mano. Personalmente uso Mathematica per questo, sebbene funzionino anche molte altre app. Oppure, se vuoi, puoi usare Wolfram alpha che è una versione online gratuita di matematica.

Disclaimer: perché gli esempi sono miei e spudorati di auto-approvazione prendere con un pizzico di sale.

Illustratore

La prima cosa da fare in qualsiasi app di disegno vettoriale è abilitare la griglia di aggancio . Ciò riduce la noiosità del posizionamento accurato delle linee. Uno dei motivi principali per cui non mi piace usare Inkscape è il modo inferiore di implementare questo scatto. PowerPoint viene effettivamente fornito con lo snap alla griglia per impostazione predefinita.

Illustrator non mi soddisfa molto perché non soddisfa tutte le mie esigenze. Ma finora nessun software lo fa (Maya era solito riempire questa nicchia ma poi è successo autodesk).

Il secondo motivo per cui ho scelto Illustrator è che capisce in modo nativo Postscript. Quindi, se devo programmare qualcosa, posso farlo rapidamente e i documenti esistenti si aggiornano man mano che il mio codice matura. L'immagine 3 viene eseguita in questo modo.

  • Risorsa che mostra l'accesso a snap, postscript e java script a Illustrator e collegamenti in avanti.

Ecco alcuni esempi di disegni che ho realizzato attraverso la rete con Illustrator, principalmente grazie allo snap alla griglia:

Marcia del cerchio

Immagine 1 : una delle tante immagini che ho disegnato in Illustrator su questo sito. Nota: sono un illustratore abbastanza esperto (a volte commerciale) e questo è estremamente semplice per i miei standard.

L'immagine della marcia del Cerchio in è abbastanza semplice da fare. Basta disegnare una forma casuale facendo clic in giro. Dopo questo disabilita lo snap e lascia che le guide intelligenti facciano il tuo lavoro per te. Disegna le linee nel punto più vicino alla linea, crea dei cerchi sulla linea e (ho eliminato le linee guida dopo aver finito). Risciacqua e ripeti. Mi ci sono voluti circa 3-5 minuti per disegnare l'immagine una volta che ho iniziato il mio spazio di lavoro.

Onda di continuazione

Immagine 2 : GD.SE Onda di continuazione .

Mentre questa immagine sembra molto più elaborata, non è molto più lavoro della prima immagine. È più tecnico, quindi oltre allo snap alla griglia I e ora utilizza il tasto Maiusc per vincolare le linee ad angoli di 45 gradi. I riempimenti tratteggi possono essere facilmente assegnati alle regioni con lo strumento di creazione forme di Illustrator. (esempio di builder di forme in uso , cattura dello schermo)

immagine tetra

Immagine 3 : a volte è più facile iniziare da zero in Postscript. Immagine aggiunto di post su ENG.SE .

Finalmente un'immagine che è davvero più facile da fare digitando i valori in postscript. È relativamente facile da fare in PostScript. Ho ancora fatto la tipografia in Illustrator. Mentre disegnare questo a mano non è un grosso problema, preferisco non farlo, ma lo farò se devo fare un giudizio con un occhio.

matematica

Mathematica è meravigliosa se vuoi esplorare le cose un po 'di più. L'unico inconveniente di Mathematica è che NON è economico. Ma può fare quasi tutto rapidamente. Ho usato Mathematica per alcune delle mie foto su base nurbs .

Una delle competenze principali di Mathematic è che è facile sviluppare anche immagini abbastanza complesse senza troppi problemi. Può anche animare facilmente la tua semplice immagine all'interno dell'editor .

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]
    ]
}]

Risultati nella stessa immagine di altri. Avvolgendolo all'interno di una tabella come risulta in:

inserisci qui la descrizione dell'immagine

Immagine 4 : L'animazione è semplice da eseguire all'interno dell'editor di codice utilizzando Mathematica.


4

PostScript + ps2eps + mogrify

Per la risposta di Affine Transformations , ho scritto un programma PostScript molto piccolo, quindi ho salvato diverse copie con nomi diversi e ho modificato ognuna per svolgere compiti diversi: ridimensionare, tradurre, ruotare. Ad esempio, ecco quello di base, ident.psche non fa nulla per modificare le coordinate tra il disegno rosso e il disegno nero. Ho ingrandito un po 'le linee rosse e le ho sempre disegnate per prime, quindi i due si presentano ben sovrapposti e visibili (IMO). Ho visualizzato l'anteprima di ghostscript con il comando vi (ex) :!gs %. ( tutti i file di origine )

%!
/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

Ho quindi usato il ps2epscomando da psutilsper calcolare automaticamente i bounding box

$ 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.

E infine usato il convertcomando di imagemagick per produrre immagini png ritagliate. (Non ho pensato a un modo rapido per automatizzare questa parte. Modifica: come commentato, questo può essere fatto con mogrify -format png *.eps. Grazie, 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

Che produce PNG, pronti per il caricamento.

$ 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


Non vedo davvero il punto di generare l'incapsulamento con ps2eps non puoi semplicemente digitare l'intestazione eps nel tuo modello. Rende le istruzioni più pulite (e l'utente ha bisogno di meno dipendenze). Invece di convertire ogni file separatamente, faimogrify -format png *.eps
joojaa

Freddo. Non lo sapevo mogrify. Per la ps2epsparte, calcola (e aggiunge) automaticamente le informazioni del riquadro di selezione. Se si omette quella parte, convertverranno prodotte immagini a dimensione
intera

4

Uso Powerpoint per creare questi diagrammi e funziona benissimo non appena ti senti a tuo agio con i suoi primitivi di base. Supporta tutte le operazioni semplici come rotazione, traduzione, ecc. E le recenti revisioni hanno anche trasformazioni di taglio e 3D. Esempi:

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine

Ecco un esempio di un diagramma di Powerpoint che ho creato per una risposta.

Per diagrammi più complicati, specialmente in 3D, a volte uso Blender con materiali senza ombre. Posso elaborare e mostrare esempi se è pertinente alla tua domanda.

Sembra che jsfiddle sia popolare anche qui.


Sono d'accordo --- la mia risposta probabilmente non è più valida perché non ho usato diagrammi in nessuna risposta finora. Ma mi aspetto che ciò accada presto. Quindi, se è giusto che questa risposta rimanga in sospeso per alcuni giorni, sono sicuro che sarò in grado di trovare una risposta.
ap_8

Fatto! La mia risposta dovrebbe essere valida ora.
ap_

Eccellente. Eliminare i miei commenti precedenti.
Luser droog

4

Non la cassetta degli attrezzi definitiva che potresti cercare, ma solo uno strumento in più che uso me stesso: per la grafica 3D, Blender potrebbe tornare utile. Soprattutto se si utilizza il plug-in Export_SVG (disponibile da http://dl.dropbox.com/u/16486113/Blender/archivos/temp/SVG/export_svg.py e http://blenderartists.org/forum/showthread.php? 282824-SVG-output-script )

Questo ti permette di ottenere oggetti Blender 3d come grafica vettoriale in Illustrator o Inkscape. Trovo che mi dia un buon inizio per la creazione di semplici illustrazioni 3d.

Mi permetta di incollare un esempio. (In questo esempio uso molti colori, ma ovviamente, invece, può essere tutto realizzato in bianco e rosso su bianco)

inserisci qui la descrizione dell'immagine


sicuramente intendi illustratore e inkscape (invece di illustratore e illustratore)
joojaa,

Lo so di sicuro! Tnx!
Ideogram,

1

Uso Powerpoint e vari pacchetti CAD (costosi). Ho scritto macro Powerpoint (codice VBA) per fare alcune cose speciali come disegnare i poligoni di controllo delle curve di Bezier. Quindi uso lo Strumento di cattura di Windows standard per acquisire schermate. Ecco alcuni esempi:

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine

E alcuni ulteriori esempi da Math.SE

Uno
Due
Tre
Quattro
Cinque


Powerpoint è in realtà piuttosto costoso considerando le cose. Va bene, dopo che tutte le abilità di disegno vengono da te. Ma almeno tikz, inkscape, blrnder e postscript sono molto più economici di powerpoint.
joojaa,

Sono vecchio, quindi per me il tempo è più importante dei soldi. Inkscape è buono, ma non passerei il tempo a scrivere tikz o codice Postscript per produrre immagini.
bubba,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.