Tvorba (nejen) 3D grafiky v příkazovém prostředí Asymptote

Transkript

Tvorba (nejen) 3D grafiky v příkazovém prostředí Asymptote
Tvorba (nejen) 3D grafiky v přı́kazovém prostředı́
Asymptote
O. Vlach1
1 Katedra
Aplikované Matematiky VŠB-TU Ostrava
Odborný seminář 17.03.2011
Osnova
Úvod
2D grafika
3D grafika
Animace
O. Vlach
Asymptote
Historie
1979: TEXa METAFONT(Knuth)
1986: 2D Bezier control point selection (Hobby)
1989: METAPOST(Hobby)
2004: Asymptote
2004:
2005:
2008:
2009:
2010:
initial public release (Hammerlindl, Bowman,& Prince)
3D Bezier control point selection (Bowman)
3D interactive TEX within PDF les (Shardt & Bowman)
3D billboard labels that always face camera (Bowman)
3D PDF enhancements (Vidiassov & Bowman)
O. Vlach
Asymptote
Co Asymptote v současnosti umı́
přenositelný standart pro matematickou grafiku
generuje PostScript, PDF, SVG
PDF může obsahovat 3D vektorovou PRC grafiku
inspirace METAPOST tem, jednoduššı́ syntaxe (podobná
C++), IEEE float-point aritmetika
přenositelnost (Unix, MacOS, Windows)
jazyk je matematicky orientován (např. rotaci lze napsat jako
násobenı́ bodu e iϕ )
popisky (labels) v LATEX u
rozšiřuje METAPOST tový pojem cesty (path) do 3D
přı́kazy jsou překládány do virtual machine code (rychlost,
zachovává přenositelnost)
O. Vlach
Asymptote
Tvůrci
Financováno z
Natural Sciences and Engineering Research Council of Canada
Pacific Institute for Mathematical Sciences
University of Alberta Faculty of Science
Autoři kódu
Andy Hammerlindl , John C. Bowman a Tom Prince
dalšı́ poděkovánı́: Sean Healy, Michail Vidiassov, Radoslav
Marinov, Orest Shardt, Chris Savage, Philippe Ivaldi, Olivier
Guibé, Jacques Pienaar, Mark Henning, Steve Melenchuk,
Martin Wiebusch a Stefan Knorr
O. Vlach
Asymptote
Downloads (verze)
Aktuálnı́ verze 2.08
http:
//sourceforge.net/projects/asymptote/files/asymptote/
O. Vlach
Asymptote
Downloads (poslednı́ch 12 měsı́ců)
O. Vlach
Asymptote
Začı́náme (batch mode)
asy -V -f pdf ... test pro výstup v PDF, (-V automaticky
spustı́ náhled)
draw((0,0)--(100,100)) ... spojı́ body (0,0) a (100,100)
přı́mou čarou
O. Vlach
Asymptote
Začı́náme (interactive mode, prvnı́ krok)
(0,0) a (100,100), zvané pairs jsou v PostScriptových ”big
points”(1 bp = 1/72 inch). Default tloušt’ka čáry = 0.5bp
O. Vlach
Asymptote
Začı́náme (interactive mode, zatı́m pomalu)
modrý čtverec nenı́ vidět −→ unitsize změnı́ velikost celého
obrázku
O. Vlach
Asymptote
Začı́náme (popisky)
R
e2 d x
C
A
B
size(3cm);
draw(unitsquare,black+3pt);
label("$A$",(0,0),SW,red);
label("$B$",(1,0),SE,blue);
label("$C$",(1,1),NE);
label("$\int
e^2d\,x$",(0,1),NW);
E=left=(1,0), N=up=(0,1), NE=unit(N+E), a
ENE=unit(E+NE)... atd. v modulu plain
když chcete použı́t E, tak poůvodnı́ je plain.E
O. Vlach
Asymptote
Začı́náme (cesty)
size(3cm);
pair[] a = {(0,-2),(1,0),(0,2)};
path p1,p2,p3;
p1 = a[0]--a[1]--a[2];
p2 = a[0]..a[1]..a[2];
p3 = a[0]{up}..a[1]..{up}a[2];
for (int
i=0;i<a.length;++i){dot(a[i]);};
draw(p1,black+0.5pt+dashed);
draw(p2,blue+0.5pt+dotted);
draw(p3,red+0.5pt);
O. Vlach
Asymptote
Začı́náme (path × guide)
size(200);
real mexican(real x) return
(1-8x^2)*exp(-(4x^2));
int n=30; real a=1.5;
real width=2a/n;
guide hat;
path solved;
for(int i=0; i < n; ++i) {
real t=-a+i*width;
pair z=(t,mexican(t));
hat=hat..z;
solved=solved..z;
}
draw(hat,black+1pt);
dot(hat,red);
draw(solved,blue+1pt+dashed);
O. Vlach
Asymptote
3D (text)
import three;
size(100);
currentprojection=perspective(1,-2,1
draw(unitbox);
label("Billboard",X,red,Billboard);
label("Embedded",Y,blue,Embedded);
generováno pomocı́
asy -render 1 -V -f pdf -o ../img/test21.pdf
test21.asy
O. Vlach
Asymptote
3D (šipky)
import three; size(100); defaultpen(0.3mm);
currentprojection=perspective(24,14,13);
path3
g=arc(O,1,90,-60,90,60);defaultrender.merge=true;
transform3 t=shift(invert(3S,O));
draw(g,blue,Arrows3(TeXHead3),currentlight);
draw(scale3(3)*g,green,ArcArrows3(HookHead3));
draw(scale3(6)*g,red,Arrows3(DefaultHead3));
draw(t*scale3(3)*g,green,ArcArrows3(HookHead2,NoFill));
draw(t*scale3(6)*g,red,Arrows3(DefaultHead2(normal=Z)));
draw(t*g,blue,Arrows3(TeXHead2));
O. Vlach
Asymptote
2D Animace (zdroj)
import geometry; import animate; unitsize(0.5cm);
animation A=animation("movie1"); pair pM, pC, pN;
real h=2pi/10; real a=2; guide nephroide;
draw(scale(a)*unitcircle);
for(int k=0; k < 360; k+=5) {
save();
pM=rotate(k,(0,0))*(a,0); pC=1.5*pM;
pN=rotate(2*k,pC)*pM; nephroide=nephroide..pN;
draw(shift(pC)*scale(a/2)*unitcircle);
draw(nephroide,1bp+red);
draw(pN--pC,1bp+paleblue);dot(pN--pC,3bp+blue);
A.add();
restore();
}
label(A.pdf(delay=50,keep=!settings.inlinetex));
O. Vlach
Asymptote
2D Animace (výsledek)
O. Vlach
Asymptote
3D Animace (zdroj)
settings.render=4; settings.prc=false;
import graph3; import animate;
currentprojection=orthographic(1,-2,0.5);
animation A=animation("movie3");
int n=20; for(int i=0; i < n; ++i) {
picture pic; size3(pic,6cm,6cm,4cm);
real k=i/n*pi;
real f(pair z) return 4cos(abs(z)-k)*exp(-abs(z)/6);
draw(pic,surface(f,(-4pi,-4pi),(4pi,4pi),Spline),paleblue);
draw(pic,shift(i*6Z/n)*unitsphere,yellow);
A.add(pic);
}
label(A.pdf("controls",delay=20,keep=!settings.inlinetex));
O. Vlach
Asymptote
3D Animace (výsledek)
O. Vlach
Asymptote
Asymptote a LATEX
soubor pokus.tex
\documentclass[12pt]{article}
\usepackage[inline]{asymptote}
\begin{document}
Nejaky text
\begin{asy}
draw((1,1)--(2,2));
\end{asy}
Nejaky text
\end{document}
překlad
pdflatex -shell-escape pokus.tex
asy pokus-*.asy
pdflatex -shell-escape pokus.tex
nebo
latexmk -pdf pokus
O. Vlach
Asymptote
Literatura
J.C. Bowman and A. Hammerlindl.
Interactive TEX-Aware 3D Vector Graphics
talk, 2010.
http://asymptote.sf.net/intro.pdf.
J.C. Bowman and A. Hammerlindl.
Asymptote: A vector graphics language
TUGBOAT: The Communications of the TEX Users Group,
29:2, 288-294 (2008).
http://www.math.ualberta.ca/~bowman/publications/asyTUG.pdf.
Dario Teixeira.
ASYMPTOTE and LATEX: An Integration Guide
2007.
http://www.dse.nl/~dario/projects/asylatex/asylatex.pdf.
O. Vlach
Asymptote

Podobné dokumenty

Bioinformatika

Bioinformatika 1 A 133 SER HIS SER GLY VAL ASN GLN LEU GLY GLY VAL PHE 2 A 133 ASN GLY ARG PRO LEU PRO ASP SER THR ARG GLN ARG 3 A 133 VAL GLU LEU ALA HIS SER GLY ALA ARG PRO CYS ASP 4 A 133 SER ARG ILE LEU GLN V...

Více

ŽL 06/2004 - Obec Žilina

ŽL 06/2004 - Obec Žilina odpad můžefirma dále využítaž9a% a ze školníchsběrů je to ještě více. Třetía nejzajímavějšízastávkou byla návštěva řizené skládky u obce Lány, kterou firma provozuje nékolik let. Loni jsme si vysle...

Více

SYNTÉZA PEPTID Ů NA PEVNÉ FÁZI A KOMBINATORIÁLNÍ

SYNTÉZA PEPTID Ů NA PEVNÉ FÁZI A KOMBINATORIÁLNÍ a jim se pak věnovat se zvláštní pozorností. Z triků pro překonání takzvaných „difficult couplings“ je možno zmínit použití různých kondenzačních činidel, případně zvýšené teploty či mikrovln pro r...

Více

English-Czech dictionary of mathematical terminology

English-Czech dictionary of mathematical terminology Related terms: differential equation, initial value problem, initial value problem, first-order equation, finding a solution, looking for a solution, particular solution of a differential equation,...

Více