Wie erstelle ich einfache 2D-Illustrationen zu Geometrieantworten?


14

In meiner Antwort zu Affinen Transformationen habe ich ein paar kleine Illustrationen gemacht, um die Erklärung zu erleichtern.

Wie kann man schnell ein hochladbares PNG erstellen, das eine geometrische oder mathematische Idee zum Ausdruck bringt?

Diese Frage wurde entwickelt, um meine Postscript-Antwort zu stützen, soll aber andere Lösungen erfragen, von denen das SE-Netzwerk im Allgemeinen profitieren kann. Für die Glaubwürdigkeit muss eine Antwort jedoch mit einem Beitrag verknüpft sein, in dem diese Technik tatsächlich verwendet wurde, sowie mit einem ausreichenden Teil der Anleitung, wenn dies mehr als nur etwas Offensichtliches wie "Export aus Menü auswählen" umfasst.

Hier und hier gibt es zwei Meta-Fragen, die sich darauf beziehen , wie diese Frage im Lichte der Prioritäten, die sie für unsere Site festlegen kann, berücksichtigt werden soll.


2
Ich persönlich sehe diese Frage eher bei PostScript als bei Computergrafiken.
cifz

1
@cifz richtig das würde besser zu GD.SE passen . Aber das ist kein Grund, warum es hier nicht sein kann.
Joojaa

@citz Ich glaube ich verstehe was du meinst. Was ist, wenn ich es aus der Frage herausnehme und es für Tikz und Asymptote und so weiter öffne?
Luser Droog

Ich antworte hier, um zu zeigen, dass dies ein bisschen als Frage gedacht ist und Antworten definitiv sein werden. Vielleicht sollte dieser gesamte Thread in unserer Meta leben, so wie dies auf GD.SE der Fall ist . Irgendwelche Gedanken, @cifz
joojaa

Antworten:


13

Ich benutze eine Vielzahl von Werkzeugen, je nach den besonderen Bedürfnissen des Augenblicks. Ich habe eine Vorliebe für kostenlose Tools, da ich keinen Zugang zu Dingen wie Illustrator oder Mathematica habe.

Für allgemeine Vektorgrafiken verwende ich das kostenlose Inkscape . Es bearbeitet .svg-Dateien und kann sie auch als hochwertige .pngs oder andere Bitmap-Formate rendern. Hier ist ein Diagramm, das ich in Inkscape erstellt habe , um die UV-Zuordnung zu erläutern :

Für 2D-Funktionsdiagramme verwende ich häufig den Online-Grafikrechner Desmos , mit dem Sie Diagramme bequem online freigeben können , damit andere sie anzeigen und ändern können. Sie können auch Schieberegler erstellen, die variiert werden können, um mit Kurvenparametern in Echtzeit zu spielen. Hier ist zum Beispiel eine konfigurierbare Schärffunktion .

Für komplexere Grafikaufgaben, die ein wenig Programmierung erfordern , verwende ich Maxima , ein kostenloses Computeralgebrasystem, das auch Grafikfunktionen bietet. Ich habe Maxima verwendet, um die Diagramme in dieser Antwort zu Gaußschen Unschärfen zu erstellen :

Dies war für Desmos etwas zu komplex, da programmatisch eine stückweise Approximation eines Gaußschen erstellt werden musste.

Für wirklich seltsame Grafikaufgaben, die von nichts anderem gut bewältigt werden, habe ich Python mit dem svgwrite- Paket verwendet, um programmgesteuert Diagramme in .svg-Dateien zu generieren. Diese können dann bei Bedarf in Inkscape nachbearbeitet und mit Inkscape oder ImageMagick in Bitmaps gerendert werden. Ich habe diesen Workflow verwendet, um die Bilder in diesem Blog-Beitrag mit Tiefengenauigkeit wie folgt zu erstellen :

In diesem Fall wollte ich nicht nur eine Funktion grafisch darstellen, sondern Markierungen programmgesteuert und ungleichmäßig entlang der Achsen und des Diagramms platzieren, um diskrete Tiefenpufferwerte zu veranschaulichen.

Und schließlich, wenn nichts anderes ausreicht, verwende ich Python mit Numpy und Pillow , um Bilder pixelweise zu rendern. Auf diese Weise habe ich die Perlin-Rauschbilder in dieser Antwort erstellt ( in diesem Fall auch mit Hilfe des Rauschpakets ).


Nathan, bist du derjenige, der das über Tiefenpräzision geschrieben hat? Wow cool ... ich habe das Ding gelesen und es hat mir sehr geholfen! Kleine Welt: P
Alan Wolfe

12

Persönlich habe ich mich für Adobe Illustrator entschieden. Andere Apps wie Inkscape, Corel Draw und Xara Designer können ebenfalls verwendet werden. Zur Not wird sogar PowerPoint funktionieren. Obwohl ich PowerPoint aufgrund schwerwiegender Probleme mit seinem Datenmodell nicht persönlich empfehle, ist es wahrscheinlich die am häufigsten eingesetzte Zeichen-App der Welt.

Es kann auch eine gute Idee sein, eine Grafikanwendung zur Hand zu haben. Ich persönlich benutze Mathematica dafür, obwohl viele andere Apps auch funktionieren würden. Wenn Sie möchten, können Sie Wolfram alpha verwenden, eine kostenlose Online-Version von mathematica.

Haftungsausschluss: Da Beispiele von mir stammen und schamlose Selbstvermerke mit einer Prise Salz zu sich genommen werden.

Illustrator

Das erste, was Sie in einer Vektorzeichen-App tun sollten, ist, das Fangraster zu aktivieren . Dies verringert die Mühe, Linien genau zu platzieren. Einer der Hauptgründe, warum ich Inkscape nicht gerne benutze, ist die minderwertige Art und Weise, wie dieses Einrasten implementiert wird. In PowerPoint ist das Raster standardmäßig aktiviert.

Ich bin mit Illustrator nicht wirklich zufrieden, da es nicht alle meine Bedürfnisse erfüllt. Aber bisher gibt es keine Software (Maya hat diese Nische gefüllt, aber dann geschah Autodesk).

Der zweite Grund, warum ich Illustrator gewählt habe, ist, dass es Postscript von Haus aus versteht. Wenn ich also etwas programmieren muss, kann ich dies schnell tun und vorhandene Dokumente werden aktualisiert, wenn mein Code ausgereift ist. Bild 3 wird auf diese Weise erstellt.

  • Ressource, die den Zugriff von Snap-, Postscript- und Java-Skripten auf Illustrator und Links anzeigt.

Hier sind einige Beispiele für Zeichnungen, die ich mit Illustrator im gesamten Netzwerk erstellt habe, meistens mithilfe von Grid-Snaps:

Kreismarsch

Bild 1 : Eines von vielen Bildern, die ich als Illustrator auf dieser Seite gezeichnet habe. Hinweis: Ich bin ein ziemlich erfahrener Illustrator (manchmal kommerziell) und dies ist nach meinen Maßstäben extrem einfach.

Das Bild zum Einmarsch des Kreises ist relativ einfach zu erstellen. Zeichne einfach eine zufällige Form, indem du herumklickst. Deaktivieren Sie anschließend den Snap und lassen Sie die Smart Guides Ihre Arbeit für Sie erledigen. Zeichnen Sie Linien zum nächsten Punkt auf der Linie, machen Sie Kreise zur Linie und (ich habe die Hilfslinien gelöscht, nachdem ich fertig war). Spülen und wiederholen. Es dauerte ungefähr 3-5 Minuten, um das Bild zu zeichnen, nachdem ich meinen Arbeitsbereich gestartet hatte.

Fortsetzung Welle

Bild 2 : GD.SE Fortsetzungswelle .

Während dieses Bild ziemlich aufwändig erscheint, ist es nicht viel mehr Arbeit als das erste Bild. Es ist technischer, zusätzlich zu Rasterfang I und jetzt mit der Umschalttaste, um Linien auf 45-Grad-Winkel zu beschränken. Schraffurfüllungen lassen sich mit dem Shape Builder-Tool des Illustrators ganz einfach Regionen zuordnen. (Beispiel für den verwendeten Shape Builder , Bildschirmaufnahme)

Tetra-Bild

Bild 3 : Manchmal ist es einfacher, im Postscript von vorne zu beginnen. Bild hinzugefügt, um auf ENG.SE zu posten .

Endlich ein Bild, das wirklich einfacher ist, wenn Sie die Werte in Postscript eingeben. Es ist relativ einfach in Postscript zu tun. Ich habe immer noch die Typografie im Illustrator gemacht. Während das Zeichnen von Hand keine große Sache ist, bevorzuge ich es nicht, aber ich werde es tun, wenn ich Urteilsvermögen mit den Augen tun muss.

Mathematica

Mathematica ist wunderbar, wenn Sie etwas mehr erforschen möchten. Der einzige Nachteil von Mathematica ist, dass es NICHT billig ist. Aber es kann fast alles schnell erledigen. Ich habe Mathematica für einige meiner Bilder verwendet .

Eine der Kernkompetenzen von Mathematicas ist, dass es einfach ist, auch komplexe Bilder ohne großen Aufwand zu entwickeln. Es kann auch leicht Ihr einfaches Bild in Ihrem Editor animieren .

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

Ergebnisse im selben Bild wie andere. Einwickeln es in einer Tabelle wie pro Ergebnis in:

Bildbeschreibung hier eingeben

Bild 4 : Mit Mathematica können Animationen einfach im Code-Editor erstellt werden.


4

PostScript + ps2eps + mogrify

Für die Antwort von Affine Transformations habe ich ein sehr kleines Postscript-Programm geschrieben und dann mehrere Kopien unter verschiedenen Namen gespeichert und jede für verschiedene Aufgaben bearbeitet: Skalieren, Übersetzen, Drehen. Hier ist zum Beispiel das grundlegende Beispiel, bei dem ident.psdie Koordinaten zwischen der roten und der schwarzen Zeichnung nicht geändert werden. Ich habe die roten Linien etwas größer gemacht und immer zuerst gezeichnet, damit die beiden gut überlagert und sichtbar sind (IMO). Ich habe eine Vorschau mit Ghostscript mit dem Befehl vi (ex) erstellt :!gs %. ( alle Quelldateien )

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

Ich habe dann den ps2epsBefehl von verwendet psutils, um Begrenzungsrahmen automatisch zu berechnen

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

Und schließlich wurde der convertBefehl von imagemagick verwendet, um zugeschnittene PNG- Bilder zu erstellen. (Ich dachte nicht an eine schnelle Möglichkeit, diesen Teil zu automatisieren. Bearbeiten: wie kommentiert, kann dies mit getan werden mogrify -format png *.eps. Danke, 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

Welche PNGs produziert, bereit zum Hochladen.

$ 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


Ich glaube nicht, dass es sinnvoll ist, die Kapselung mit ps2eps zu generieren, wenn Sie nicht einfach den eps-Header in Ihre Vorlage eingeben. Dadurch wird die Anweisung übersichtlicher (und der Benutzer benötigt weniger Abhängigkeiten). Anstatt jede Datei einzeln zu konvertierenmogrify -format png *.eps
joojaa

Cool. Ich wusste es nicht mogrify. Für das ps2epsTeil werden automatisch die Begrenzungsrahmeninformationen berechnet (und hinzugefügt). Wenn Sie diesen Teil weglassen, convertwerden Bilder in voller Seitengröße erstellt
luser droog

4

Ich verwende nur Powerpoint, um solche Diagramme zu erstellen, und es funktioniert hervorragend, sobald Sie mit den Grundelementen vertraut sind. Es unterstützt alle einfachen Operationen wie Rotation, Translation usw. und die jüngsten Revisionen haben auch Scher- und 3D-Transformationen. Beispiele:

Bildbeschreibung hier eingeben

Bildbeschreibung hier eingeben

Hier ist ein Beispiel eines Powerpoint-Diagramms, das ich zur Beantwortung erstellt habe.

Für kompliziertere Diagramme, insbesondere in 3D, verwende ich manchmal Blender mit schattenlosen Materialien. Ich kann Beispiele erarbeiten und zeigen, wenn dies für Ihre Frage relevant ist.

Sieht so aus, als ob jsfiddle hier auch sehr beliebt ist.


Ich stimme zu - meine Antwort ist wahrscheinlich nicht mehr gültig, da ich bisher in keiner Antwort Diagramme verwendet habe. Aber ich erwarte, dass das bald passiert. Wenn es also in Ordnung ist, dass diese Antwort ein paar Tage bleibt, bin ich sicher, dass ich eine Antwort finden kann.
ap_

Erledigt! Meine Antwort sollte jetzt gültig sein.
Ap_

Ausgezeichnet. Löschen meiner früheren Kommentare.
Luser Droog

4

Nicht die endgültige Toolbox, nach der Sie suchen, sondern nur ein zusätzliches Tool, das ich selbst benutze: Für 3D-Grafiken kann Blender nützlich sein. Besonders wenn Sie das Export_SVG-Plugin verwenden (verfügbar unter http://dl.dropbox.com/u/16486113/Blender/archivos/temp/SVG/export_svg.py und http://blenderartists.org/forum/showthread.php? 282824-SVG-Ausgabeskript )

Auf diese Weise können Sie 3D-Objekte von Blenders als Vektorgrafiken in Illustrator oder Inkscape abrufen. Ich finde, es gibt mir einen guten Einstieg in die Erstellung einfacher 3D-Illustrationen.

Lassen Sie mich ein Beispiel einfügen. (In diesem Beispiel verwende ich viele Farben, aber natürlich kann alles stattdessen schwarz-rot-auf-weiß gemacht werden.)

Bildbeschreibung hier eingeben


sicherlich meinst du illustrator und inkscape (anstelle von illustrator und illustrator)
joojaa

Ich mache es auf jeden Fall! TNX!
Ideogramm

1

Ich benutze Powerpoint und verschiedene (teure) CAD-Pakete. Ich habe Powerpoint-Makros (VBA-Code) geschrieben, um einige spezielle Aufgaben zu erledigen, z. B. das Zeichnen der Steuerpolygone von Bezier-Kurven. Dann benutze ich das Standard Windows Snipping Tool, um Screenshots zu machen. Hier sind einige Beispiele:

Bildbeschreibung hier eingeben

Bildbeschreibung hier eingeben

Bildbeschreibung hier eingeben

Bildbeschreibung hier eingeben

Und einige weitere Beispiele aus Math.SE

Eins
zwei
drei
vier
fünf


Powerpoint ist eigentlich ziemlich teuer, wenn man die Dinge bedenkt. Es ist in Ordnung, schließlich kommt die Fähigkeit zum Zeichnen von Ihnen. Aber mindestens Tikz, Inkscape, Blrnder und Postscript sind viel billiger als Powerpoint.
Joojaa

Ich bin alt, deshalb ist mir Zeit wichtiger als Geld. Inkscape ist gut, aber ich würde keine Zeit damit verbringen, Tikz- oder Postscript-Code zu schreiben, um Bilder zu produzieren.
Bubba
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.