// Slide demo.
// Command-line options to enable stepping and/or reverse video:
// asy [-u stepping=true] [-u reverse=true] [-u itemstep=true] slidedemo

orientation=Landscape;

import slide;
import three;

viewportsize=pagewidth-2pagemargin;

usersetting();

// Commands to generate optional bibtex citations:
// asy slidedemo
// bibtex slidedemo_
// asy slidedemo
//
bibliographystyle("alpha");

// Generated needed files if they don't already exist.
asy(nativeformat(),"Pythagoras","log","PythagoreanTree");
usepackage("mflogo");

// Optional background color or header:
// import x11colors;
// fill(background,box((-1,-1),(1,1)),Azure);
// label(background,"Header",(0,startposition.y));

titlepage(title="Slides with {\tt Asymptote}: A Demo",
          author="John C. Bowman",
          institution="University of Alberta",
          date="\today",
          url="https://asymptote.sourceforge.io");

outline("Basic Commands");
item("item");
subitem("subitem");
remark("remark");
item("draw \cite{Hobby86,Knuth86b}");
item("figure");
item("embedded and external animations: see {\tt slidemovie.asy}");

title("Items");
item("First item.");
subitem("First subitem.");
subitem("Second subitem.");
item("Second item.");
equation("a^2+b^2=c^2.");
equations("\frac{\sin^2\theta+\cos^2\theta}{\cos^2\theta}
&=&\frac{1}{\cos^2\theta}\nonumber\\
&=&\sec^2\theta.");
remark("A remark.");
item("To enable pausing between bullets:");
remark("{\tt asy -u stepping=true}");
item("To enable reverse video:");
remark("{\tt asy -u reverse=true}");

title("Can draw on a slide, preserving the aspect ratio:");
picture pic,pic2;
draw(pic,unitcircle);
add(pic.fit(15cm));
step();
fill(pic2,unitcircle,paleblue);
label(pic2,"$\pi$",(0,0),fontsize(500pt));
add(pic2.fit(15cm));

newslide();
item("The slide \Red{title} \Green{can} \Blue{be} omitted.");
figure("Pythagoras","height=12cm",
       "A simple proof of Pythagoras' Theorem.");

newslide();
item("Single skip:");
skip();
item("Double skip:");
skip(2);
figure(new string[] {"log."+nativeformat(),"PythagoreanTree."+nativeformat()},
       "width=10cm",new string[] {"{\tt log.asy}","{\tt PythagoreanTree.asy}"},
       "Examples of {\tt Asymptote} output.");

title("Embedded Interactive 3D Graphics");
picture pic;
import graph3;
import solids;
viewportmargin=(0,1cm);
currentprojection=orthographic(1,0,10,up=Y);
pen color=green;
real alpha=-240;
real f(real x) {return sqrt(x);}
pair F(real x) {return (x,f(x));}
triple F3(real x) {return (x,f(x),0);}
path p=graph(pic,F,0,1,n=30,operator ..)--(1,0)--cycle;
path3 p3=path3(p);
revolution a=revolution(p3,X,alpha,0);
render render=render(compression=0,merge=true);
draw(pic,surface(a),color,render);
draw(pic,p3,blue);
surface s=surface(p);
draw(pic,s,color,render);
draw(pic,rotate(alpha,X)*s,color,render);
xaxis3(pic,Label("$x$",1),xmax=1.25,dashed,Arrow3);
yaxis3(pic,Label("$y$",1),Arrow3);
dot(pic,"$(1,1)$",(1,1,0));
arrow(pic,"$y=\sqrt{x}$",F3(0.8),Y,0.75cm,red);
real r=0.4;
draw(pic,F3(r)--(1,f(r),0),red);
real x=(1+r)/2;
draw(pic,"$r$",(x,0,0)--(x,f(r),0),X+0.2Z,red,Arrow3);
draw(pic,arc(1.1X,0.4,90,90,3,-90),Arrow3);
add(pic.fit(0,14cm));

title("\mbox{Asymptote: 2D \& 3D Vector Graphics Language}");
asyinclude("logo3");
center("\tt https://asymptote.sourceforge.io");
center("(freely available under the LGPL license)");

bibliography("refs");
