Asymptote es un lenguaje descriptivo de gráficos vectoriales , desarrollado por Andy Hammerlindl, John C. Bowman (Universidad de Alberta) y Tom Prince, que proporciona un marco de trabajo basado en coordenadas naturales para el dibujo técnico . Asymptote funciona en todas las plataformas principales ( Unix , Mac OS , Microsoft Windows ). Es software libre , disponible bajo los términos de la Licencia Pública General Reducida de GNU (LGPL).
Asymptote compone etiquetas y ecuaciones con LaTeX , produciendo una salida PostScript , PDF , SVG o PRC 3D de alta calidad . [2] Está inspirado en MetaPost , pero tiene una sintaxis similar a C. Proporciona un lenguaje para componer figuras matemáticas, al igual que TeX / LaTeX proporciona un lenguaje para componer ecuaciones. Está orientado matemáticamente (por ejemplo, rotación de vectores por multiplicación compleja) y utiliza el método simplex y dibujo diferido para resolver problemas generales de restricción de tamaño entre objetos de tamaño fijo (etiquetas y puntas de flecha) y objetos que deben escalar con el tamaño de la figura.
Asymptote generaliza completamente los algoritmos de construcción de rutas de MetaPost a tres dimensiones [3] y compila comandos en código de máquina virtual para lograr velocidad sin sacrificar la portabilidad. Los comandos gráficos de alto nivel se implementan en el propio lenguaje Asymptote, lo que permite adaptarlos fácilmente a aplicaciones específicas. También parece ser el primer paquete de software que lleva TeX a tres dimensiones [4] [5] Esto permite que Asymptote se use como un formato de archivo vectorial 3D .
Asymptote también se destaca por tener una interfaz gráfica codificada en Python (y el conjunto de widgets Tk ), xasy.py – esto permite a un usuario inexperto dibujar rápidamente objetos y guardarlos como código fuente .asy que luego puede examinarse o editarse a mano.
La sintaxis del programa se describió originalmente utilizando una gramática compatible con Yacc .
El siguiente código fuente permite dibujar un gráfico de la función Heaviside mediante el lenguaje Asymptote.
importar gráfico ; importar configuraciones ; outformat = "pdf" ; tamaño ( 300 , 300 );// Función. real [] x1 = { - 1.5 , 0 }; real [] y1 = { 0 , 0 }; real [] x2 = { 0 , 1.5 }; real [] y2 = { 1 , 1 }; dibujar ( graficar ( x1 , y1 ), rojo + 2 ); dibujar ( graficar ( x2 , y2 ), rojo + 2 ); dibujar (( 0 , 0 ) -- ( 0 , 1 ), rojo + 1.5 + tipolinea ( "4 4" )); rellenar ( círculo (( 0 , 1 ), 0.035 ), rojo ); rellenardibujar ( círculo (( 0 , 0 ), 0.03 ), blanco , rojo + 1.5 ); // Ejes. ejex ( Etiqueta ( "$x$" ), Marcas ( nuevo real []{ - 1 , - 0.5 , 0.5 , 1 }), Flecha ); ejey ( Etiqueta ( "$y$" ), Marcas ( nuevo real []{ 0.5 , 1 }), Flecha , ymin =- 0.18 , ymax = 1.25 ); // Origen. etiquetax ( "$O$" , 0 , SO );
El código anterior produce la siguiente salida en PDF.