Asymptote (Vektorgrafik-Sprache)

Programmiersprache vor Vektorgrafiken

Asymptote ist eine Vektorgrafik-Sprache, die von Andy Hammerlindl, John C. Bowman (University of Alberta) und Tom Prince entwickelt wurde. Sie bildet ein koordinatenbasiertes Grundgerüst für die Erstellung technischer Zeichnungen. Es ist ferner der Name einer Software, um diese Sprache zu interpretieren. Diese gibt es in Versionen für alle verbreiteten Plattformen wie Unix, MacOS und Windows. Die Software ist quelloffen und unter der GNU Lesser General Public License (LGPL) veröffentlicht.

Asymptote

LaTeX-Logo
Basisdaten

Entwickler Andy Hammerlindl, John C. Bowman, Tom Prince
Erscheinungsjahr 2004
Aktuelle Version 2.92[1]
(8. Oktober 2024)
Betriebssystem verschiedene
Programmier­sprache C++
Kategorie Vektorgrafik
Lizenz GNU Lesser General Public License, Version 3.0 oder später[2]
asymptote.sourceforge.io

Syntax und wesentliche Merkmale

Bearbeiten

Für die Darstellung von Beschriftungen und Gleichungen nutzt Asymptote LaTeX. Die Ausgabe erfolgt in PostScript, PDF, SVG oder 3D Product Representation Compact,[3] einem Format, das es erlaubt, 3D-Daten in ein PDF-Dokument einzubetten. Asymptote hat MetaPost als Vorbild, aber eine Syntax, die Ähnlichkeit mit C++ aufweist. So wie TeX/LaTeX eine Sprache für den Schriftsatz von mathematischen Gleichungen ist, ist Asymptote eine Sprache für die Darstellung der daraus resultierenden Funktionsgraphen und anderer geometrischer Figuren.

Asymptote ist in jeder Hinsicht auf mathematische Anwendungen zugeschnitten. So können z. B. Vektoren mit Hilfe komplexer Multiplikation gedreht werden. Um Konflikte zwischen Elementen, die vom Maßstab abhängen, und Elementen, die vom Maßstab unabhängig sind, aufzulösen (z. B. Beschriftungen und Pfeilspitzen von Vektoren), wird ein Simplex-Algorithmus genutzt. Die Möglichkeiten von MetaPost, Funktionsverläufe darzustellen, werden von Asymptote auf 3-dimensionale Darstellungen erweitert.[4] Die Grafikbeschreibungen werden von Asymptote zu einem Code kompiliert, der auf einer virtuellen Maschine lauffähig ist, so dass eine einfache Portierbarkeit gewährleistet ist.

In Asymptote sind komplexe Grafik-Befehle direkt in der Sprache implementiert, so dass Anwendungen mit geringem Aufwand erstellt werden können. Es kann daher als das erste Software-Paket angesehen werden, das die Domäne der dreidimensionalen Grafiken in TeX zugänglich macht.[5][6] Asymptote Quelltext eignet sich damit als Dateiformat für 3D-Grafiken.

Verbreitung und Anwendung

Bearbeiten

In Verbindung mit LaTeX ist Asymptote in der wissenschaftlichen Gemeinschaft weniger weit verbreitet als beispielsweise PGF/TikZ.[7] Dennoch ist es in den Paketquellen aktueller Linux-Betriebssysteme (z. B. Fedora und Ubuntu) enthalten und als Download für Microsoft Windows erhältlich.

Asymptote wird zusammen mit Xasy geliefert. Mit dieser in Python (einschließlich Tk-Toolkit) geschriebenen GUI-Anwendung lassen sich rudimentäre Asymptote-Grafiken erstellen. Diese können als .asy-Sourcecode exportiert werden. Dieser kann anschließend von Hand modifiziert oder erweitert werden.

 
Xasy 2.41 unter Kubuntu 18.04

Beispielcode

Bearbeiten
import graph;
size(6cm);
draw((-1,0) -- (-0.5,1) -- (0.5,1) -- (1,0) -- cycle);
dot((-1,0),green);
dot((+1,0),green);
dot((-0.5,1),blue);
dot((+0.5,1),blue);

real f(real x) {return 0.1*cos(2*pi*10*x)*cos(2*pi*1*x) +3/8;}
path g = graph(f,-3/4,3/4,n=1000, join=operator --);
draw(g, gray);

label("Hello world!", (0,0.1));

Durch den Asymptote-Code wird ein Trapez mit „Hello World“-Label und hervorgehobenen Eckpunkten erzeugt. Zudem ist die Nutzung der Bibliothek „graph“, mit der Funktionen geplottet werden können, gezeigt.

Das folgende Ausgabe PDF-Dokument kann durch den Aufruf von asy -f pdf helloWorld.asy erzeugt werden.

 
Ergebnis des oben gezeigten Beispielcodes

Literatur

Bearbeiten
  • Jim Hefferon: First impressions of Asymptote. 26. Mai 2024 (ctan.org [abgerufen am 29. Juli 2024] = Paket asy-overview auf CTAN).

Siehe auch

Bearbeiten
Bearbeiten

Einzelnachweise

Bearbeiten
  1. Release 2.92. 8. Oktober 2024 (abgerufen am 21. Oktober 2024).
  2. github.com. (abgerufen am 27. Juli 2020).
  3. J. C. Bowman and A. Hammerlindl: Asymptote: A vector graphics language. (PDF) In: TUGBOAT: The Communications of the TeX Users Group, 29:2. 2008, S. 288–294, abgerufen am 30. April 2014 (englisch).
  4. J. C. Bowman: The 3D Asymptote Generalization of MetaPost Bézier Interpolation. (PDF) In: Proceedings in Applied Mathematics and Mechanics, 7:1. 2007, S. 2010021–2010022, abgerufen am 30. April 2014 (englisch).
  5. J. C. Bowman and Orest Shardt: Asymptote: Lifting TeX to three dimensions. (PDF) In: TUGBOAT: The Communications of the TeX Users Group, 30:1. 2009, S. 58–63, abgerufen am 30. April 2014 (englisch).
  6. O. Shardt and J. C. Bowman: Surface Parametrization of Nonsimply Connected Planar Bézier Regions. (PDF) In: Computer-Aided Design, 44:5. 2012, abgerufen am 30. April 2014.
  7. Drawing with TeX. Abgerufen am 3. Mai 2019 (amerikanisches Englisch).