Asymptote
From Wikipedia, the free encyclopedia
Remove ads
Az asymptote 2 vagy 3 dimenziós grafikus ábrák előállítására készült programozási nyelv. Az ábra koordináta-rendszerben, matematikai eszközökkel készül.
A 2 vagy 3 dimenziós pont alap adattípus. A pontok összeköthetők egyenessel vagy harmadfokú spline-nal (Bézier-görbével). Az utóbbi a görbe törését minimalizálja a csatlakozási pontokban kör, ellipszis, parabola stb. rajzolása esetén. A geometriai transzformációkat (eltolás, nagyítás, tükrözés stb.) beépített függvények végzik, mint ahogyan magát a rajzolást is.
A rajz vektorgrafikus, a program kimenete .eps (encapsulated postscript).[1] Az asymptote be tud olvasni külső .eps file-okat, és a postscript-utility-khez hasonló műveletet végezni velük és a programmal készült ábrával (nagyítás, elforgatás, összeillesztés, keretezés stb.).
A nyelv strukturált és objektumorientált, legjobban a C++-hoz ill. a Javához hasonlít. Az asymptote-fordító a Pascal p-kódjához hasonlóan belső kódra fordít, majd azt interpretálja.
A nyelv elérhető Linux-ban, MacOS-ben és Windows-ban egyaránt.
Remove ads
Az asymptote programnyelv
A nyelv mind szintaxisában, mind szemantikájában a C++ ill. Java nyelvre hasonlít egy fontos kivétellel: ez a paraméterátadás.
Paraméterátadás
Az asymptote-ban a hívó névvel is átadhatja a paramétert fv(paramnév=érték) alakban. A C-szerű és a névvel megadott paraméterek egy híváson belül is keverhetők.
A paraméter opcionális lehet; ilyenkor az alapértékét a hívott függvényben kell megadni. A függvényhíváskor típusillesztés van, így opcionális paraméterek lehetnek a kötelezők előtt/között is, ha különböző típusúak.
A beépített függvények kiterjedten használják a fenti lehetőségeket, és a default értékek megválasztása igen jó, így ritkán kell sok paramétert megadni (ami a grafikus programokat gyakran teszi áttekinthetetlenné).
Alap adattípusok
Beépített objektumok
Beépített görbék
A függvények a graph csomagban vannak, vagyis a használat előtt ki kell adni az
import graph;
utasítást.
- path Circle(pair középpont, real sugár, int pontszám=400);
A pontszám azt adja meg, hogy az asymptote hány pontból húzza meg a kört. A default érték 400. - path Arc(pair középpont, real sugár, real kezdőszög, real végszög, bool irány, int pontszám);
Körívet húz a két megadott szög között. - path polygon(int élszám);
Szabályos zárt sokszög. Ellipszist az X- vagy Y-irányban kicsinyített/nagyított körrel lehet húzni.
Geometriai transzformációk
- shift (eltolás)
- xscale, yscale, scale (nagyítás X-, Y- ill. mindkét irányban)
- rotate (forgatás)
- reflect (tükrözés)
A transzformációt a * művelet végzi (operátor overload), mely nem kommutatív: első paramétere transform típusú (a fenti függvények mind ilyenek), a második path vagy path[]. A transzformáció postscript szinten történik.
Rajzoló függvények
- dot: kirajzol egy pontot (tesztelésre ill. geometriai ábrák rajzolásakor hasznos)
- draw: kirajzol egy ábrát. Paraméterként megadható az ábra (path vagy path[]; egyedül ez a paraméter kötelező), feliratozás, toll, az ábra elejére és/vagy végére rajzolandó nyilak, magyarázó szöveg (legend: pl. egy ábrán különböző színnel rajzolt görbék esetén melyik szín mit jelent).
- label: feliratozás. Ugyanazok a paraméterei, mint draw-nak, de csak a szövegeket írja ki, az ábrát nem rajzolja ki. Pl. olyankor lehet hasznos, ha a kettőt más tollal kell rajzolni. Az ábrát is meg kell adni, mert ehhez igazítja a szöveget.
- fill ill. filldraw: kiszínez egy zárt ábrát (path-t). A második függvénynek két toll paramétere van: az egyik a határt rajzolja, a másik színez.
- clip: kivág egy darabot az ábrából. A kivágandó területet zárt ábraként kell megadni.
Egyéb utasítások
Az asymptote többi utasítása hasonló a megszokott programnyelvekhez. Az if, for, while, break, continue azonos a C-vel, viszont nincs switch utasítás. A tömböt kezelő for indexváltozója javás alakban is írható.
Az import megfelel a C „kacsacsőrös”, az include a C idézőjeles include-jának. A from utasítással egy include-file egy részét is be lehet szúrni a programba.
A nyelv természetesen tartalmaz matematikai függvényeket, filekezelést, objektumok definiálását, stb. Ezek megszokottak, ezért itt nem ismertetjük.
Remove ads
Installálás, környezet
Az asymptote program más GPL-szoftvereket is használ:
- LaTeX (az ábrafeliratok formázására)
- Ghostscript (a postscript-műveletekhez)
- ImageMagick (a .eps konverziójához)
- pdf2svg vagy dvisvgm (SVG előállításához)
- python (a grafikus user-interface használatához)
Az első kettő kötelező, a többi a teljes funkcionalitáshoz kell.
A Debian-alapú disztribúciókban megtalálható az asymptote, és a dvisvgm kivételével a többi szoftver is, így az installálás egyetlen utasítás:
apt-get install asymptote texlive-latex-extra
A Fedora 4-ben még benne volt az asymptote, a Red Hat 5 és 6-ból azonban már kimaradt, így azt külön kell beszerezni. A többi programot a Red Hat-disztribúció tartalmazza (a dvisvgm kivételével). Az asymptote honlapon megtalálhatók a letöltési helyek (Windows-ra és MacOS-re is).
Latin2-es karakterkészlet
Az asymptote csak a latin1-es karakterkészletet ismeri, de ezen könnyű segíteni. A latin1.asy mintájára (a Debian disztribúcióban ez a /usr/share/asymptote könyvtárban található) létre tudjuk hozni a latin2.asy-t az alábbi tartalommal:
usepackage("fontenc","T1"); usepackage("inputenc","latin2");
Az asy-program elejére írt
import latin2;
utasítás után a programunk érteni fogja a latin2-es karakterkészletet. (UTF-8-hoz az unicode.asy-t kell a fenti módon importálni; ez megvan az asy-ban.)
Futtatás
A sajat.asy-t az
asy sajat
utasítással fordíthatjuk le. Az eredményt imagemagick-kel a
display +matte sajat.eps
utasítással nézhetjük meg.
Az eredményfile formátuma
Az eredmény default formátuma a tex/latex program használt változatától függ:
- latex és tex esetén eps
- pdflatex, xelatex és context esetén pdf.
A default formátum felhasználónként változtatható a $HOME/.asy/config.asy file-ban. A file asymptote-utasításokat tartalmaz. Pl.: import settings; outformat="pdf"; a PDF-et állítja be alapformátumnak.
Az alapformátum az asymptote hívásakor parancssorban, vagy akár magában a programban is megváltoztatható. asy -f svg abra.asy eredménye az abra.svg file lesz.
A formátum megváltoztatásához az asymptote külső konvertert használ, melyet külön kell installálni:
- az ImageMagick convert programját
- a dvisvgm programot[3] SVG formátumhoz.
Az ImageMagick/convert nagyon sok formátumot ismer.[4] A gyakoribbak:
- eps, ps, pdf
- png, jpg, gif, bmp, ico, tiff.
Remove ads
Példa teljes asymptote programra

import graph; size(75,75); // abrameret defaultpen(1.0); // vonalvastagsag path hatszog = rotate(-30)*polygon(6); draw(hatszog^^Circle((0,0),0.5)); label(shift((0,-5))*'Benzol',point(hatszog,0));
Példa függvény kirajzolására

import graph; picture pic; real f1(real x) {return ( (x^2+abs(x)-6) / (x^2+abs(x)+2) );} real f2(real x) {return ( sqrt(36-x^2) );} real felso(real x) {return ( f1(x)+f2(x) );} real also(real x) {return ( f1(x)-f2(x) );} path sziv1=graph(also,-6,6), sziv2=graph(felso,-6,6); draw(pic,sziv1,red); draw(pic,sziv2,red); xaxis(pic,"$x$",-6.8,6.8,Ticks(1.0,OmitTick(0)),Arrows); yaxis(pic,-9.8,6.8,Ticks(1.0,OmitTick(0)),Arrows); label(pic,"$y=\frac{x^2+|x|-6}{x^2+|x|+2} \pm \sqrt{36-x^2}$", (0,6.5),E); add(pic.fit(0,14cm),(-0.1,0.0));
A program fordítása: asy -f svg sziv
Remove ads
Jegyzetek
Források
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads