## Asymptote Generalities – fig0740

Category: Asymptote,Examples 2D,GeneralitiesPh. Ivaldi @ 23 h 39 min

 (Compiled with Asymptote version 2.14svn-r5318)
```
defaultpen(fontsize(20pt));
dot(Label("\$A\$"),(0,0),NE);
dot(Label("\$B\$"),(2cm,0),NE+N);

```

Étiquettes : , , , , , ,

## Asymptote Generalities – fig0880

Category: Asymptote,Examples 2D,GeneralitiesPh. Ivaldi @ 13 h 39 min

 (Compiled with Asymptote version 2.14svn-r5318)
```
size(0,0);
pair A=(0,0), B=(4cm,0);
path line=A--B;
transform TD=shift(0,-cm);
transform TR=shift(2.5cm,0);

defaultpen(linewidth(3bp));

draw("\$AB\$",line,.8red,Arrows(3mm));
draw("\$A\$",A,N); draw("\$B\$",B,N);

draw("\$AB\$",TD*line,.8red,Arrows(3mm),PenMargins);
draw("\$A\$",TD*A,N); draw("\$B\$",TD*B,N);

draw("\$AB\$",TD^2*line,.8red,Arrows(3mm),DotMargins);
dot("\$A\$",TD^2*A,dotfactor*NW); dot("\$B\$",TD^2*B,dotfactor*NE);

margin BigMargins=Margin(2,2);
draw("\$AB\$",TD^3*line,.8red,Arrows(3mm),BigMargins);
draw("\$A\$",TD^3*A,N); draw("\$B\$",TD^3*B,N);

```

Étiquettes : , , , , ,

## Asymptote Generalities – fig1000

Category: Asymptote,Examples 2D,GeneralitiesPh. Ivaldi @ 1 h 39 min

 (Compiled with Asymptote version 2.14svn-r5318)
```
size(0,0);
pair O=0;

defaultpen(linewidth(2mm));
draw(arc(O,2cm,0,60),.8red,BeginPenMargin);
draw(arc(O,2cm,60,120),.7green,PenMargins);
draw(arc(O,-2cm,0,120),.7blue);

```

Étiquettes : , , ,

## Asymptote using graph.asy – fig0050

Category: Asymptote,Examples 2D,graph.asyPh. Ivaldi @ 7 h 10 min

 (Compiled with Asymptote version 2.14svn-r5318)
```
size(8cm,0);
import graph;

xlimits( -100, 100);
ylimits( -50, 50);

defaultpen(overwrite(SuppressQuiet));

yaxis( "\$y\$" , Ticks(Label(.8red+fontsize(8),align=E)), p=.8red);
xaxis( "\$x\$", Ticks(Label(.8blue+fontsize(8))), p=.8blue);

```

Étiquettes : , ,

## Official Asymptote example – makepen

Category: Asymptote,Official Gallery One-PagerPh. Ivaldi @ 18 h 57 min

 (Compiled with Asymptote version 2.14svn-r5318)
```/* This code comes from The Official Asymptote Gallery */

size(200);
pen convex=makepen(scale(10)*polygon(8))+grey;
draw((1,0.4),convex);
draw((0,0)---(1,1)..(2,0)--cycle,convex);

pen nonconvex=scale(10)*
makepen((0,0)--(0.25,-1)--(0.5,0.25)--(1,0)--(0.5,1.25)--cycle)+red;
draw((0.5,-1.5),nonconvex);
draw((0,-1.5)..(1,-0.5)..(2,-1.5),nonconvex);

```

Étiquettes : ,

## Official Asymptote example – pdb

Category: Asymptote,Official Gallery One-PagerPh. Ivaldi @ 14 h 57 min

 (Compiled with Asymptote version 1.87svn-r4652)
```/* This code comes from The Official Asymptote Gallery */

import three;
import cpkcolors;

// A sample Protein Data Bank file for this example is available from
// http://ndbserver.rutgers.edu/ftp/NDB/coordinates/na-biol/100d.pdb1

bool getviews=true;

currentlight=White;
//currentlight=nolight;

size(200);
currentprojection=perspective(30,30,15);

// Uncomment this line for more accurate (but slower) PDF rendering
//dotgranularity=0;

pen chainpen=green;
pen hetpen=purple;

string filename="100d.pdb1";
//string filename=getstring("filename");

string prefix=stripextension(filename);
file data=input(filename);

pen color(string e)
{
e=replace(e," ","");
int n=length(e);
if(n < 1) return currentpen;
if(n > 1) e=substr(e,0,1)+downcase(substr(e,1,n-1));
int index=find(Element == e);
if(index < 0) return currentpen;
return rgb(Hexcolor[index]);
}

// ATOM
string[] name,altLoc,resName,chainID,iCode,element,charge;
int[] serial,resSeq;
real[][] occupancy,tempFactor;

bool newchain=true;

struct bond
{
int i,j;
void operator init(int i, int j) {
this.i=i;
this.j=j;
}
}

bond[] bonds;

struct atom
{
string name;
triple v;
void operator init(string name, triple v) {
this.name=name;
this.v=v;
}
}

struct chain
{
int[] serial;
atom[] a;
}

int[] serials;
chain[] chains;
atom[] atoms;

while(true) {
string line=data;
if(eof(data)) break;
string record=replace(substr(line,0,6)," ","");
if(record == "TER") {newchain=true; continue;}
bool ATOM=record == "ATOM";
bool HETATOM=record == "HETATM";
int serial;

atom a;
if(ATOM || HETATOM) {
serial=(int) substr(line,6,5);
a.name=substr(line,76,2);
a.v=((real) substr(line,30,8),
(real) substr(line,38,8),
(real) substr(line,46,8));
}
if(ATOM) {
if(newchain) {
chains.push(new chain);
newchain=false;
}
chain c=chains[chains.length-1];
c.serial.push(serial);
c.a.push(a);
continue;
}
if(HETATOM) {
serials.push(serial);
atoms.push(a);
}
if(record == "CONECT") {
int k=0;
int i=(int) substr(line,6,5);
while(true) {
string s=replace(substr(line,11+k,5)," ","");
if(s == "") break;
k += 5;
int j=(int) s;
if(j <= i) continue;
bonds.push(bond(i,j));
}
}
}

write("Number of atomic chains: ",chains.length);

int natoms;
for(chain c : chains) {
for(int i=0; i < c.a.length-1; ++i)
draw(c.a[i].v--c.a[i+1].v,chainpen,currentlight);
for(atom a : c.a)
dot(a.v,color(a.name),currentlight);
natoms += c.a.length;
}

write("Number of chained atoms: ",natoms);
write("Number of hetero atoms: ",atoms.length);

for(atom h : atoms)
dot(h.v,color(h.name),currentlight);

write("Number of hetero bonds: ",bonds.length);

for(bond b : bonds) {
triple v(int i) {return atoms[find(serials == i)].v;}
draw(v(b.i)--v(b.j),hetpen,currentlight);
}

string options;
string viewfilename=prefix+".views";

if(!error(input(viewfilename,check=false)))
options="3Dviews="+viewfilename;

if(getviews) {
picture pic;
shipout(prefix,pic,options=options);
} else
shipout(prefix,options=options);

```

Étiquettes : , , , , ,

## Official Asymptote example – rainbow

Category: Asymptote,Official Gallery One-PagerPh. Ivaldi @ 2 h 57 min

 (Compiled with Asymptote version 2.14svn-r5318)
```/* This code comes from The Official Asymptote Gallery */

size(200);

pen indigo=rgb(102/255,0,238/255);

void rainbow(path g) {
draw(new path[] {scale(1.3)*g,scale(1.2)*g,scale(1.1)*g,g,
scale(0.9)*g,scale(0.8)*g,scale(0.7)*g},
new pen[] {red,orange,yellow,green,blue,indigo,purple});
}

rainbow((1,0){N}..(0,1){W}..{S}(-1,0));
rainbow(scale(4)*shift(-0.5,-0.5)*unitsquare);

```

Étiquettes : ,

## Official Asymptote example – star

Category: Asymptote,Official Gallery One-PagerPh. Ivaldi @ 15 h 57 min

 (Compiled with Asymptote version 2.14svn-r5318)
```/* This code comes from The Official Asymptote Gallery */

size(100);
import math;

int n=5;
path p;

int i=0;
do {
p=p--unityroot(n,i);
i=(i+2) % n;
} while(i != 0);

filldraw(p--cycle,red+evenodd);

```

Étiquettes : , , , ,

## Official Asymptote example – superpath

Category: Asymptote,Official Gallery One-PagerPh. Ivaldi @ 19 h 57 min

 (Compiled with Asymptote version 2.14svn-r5318)
```/* This code comes from The Official Asymptote Gallery */

size(0,100);
path unitcircle=E..N..W..S..cycle;
path g=scale(2)*unitcircle;
filldraw(unitcircle^^g,evenodd+yellow,black);

```

Étiquettes : , ,

## Animation with Asymptote – fig0160

Category: Animation,AsymptotePh. Ivaldi @ 23 h 20 min

 (Compiled with Asymptote version 1.86svn-r4626)
Movie flash (swf)
This animation is available in the Syracuse web site.
```
import graph_settings;
import animate;
size(10cm);
settings.tex="pdflatex";
settings.outformat="pdf";

pair[] interp(pair[] a1, pair[] a2, real k)
{
if(a1.length != a2.length) abort("interp: arrays have differents length.");
pair[] g;
int l=a1.length;
g=sequence(new pair(int j){
return interp(a1[j],a2[j],k);
},l);
return g;
}

path morphing(pair[] a1, pair[] a2, real k, interpolate join=operator --)
{
if(a1.length != a2.length) abort("morphing: arrays have differents length.");
return join(...interp(a1, a2, k));
}

pair[] nodes(path g, int n)
{
int np=round(n/length(g));
n=np == 0 ? n : np*length(g);
return sequence(new pair(int i){return point(g, length(g)*i/n);}, n);
}

animation A;

int nbpt=4;
pair[] A1=nodes(unitsquare,nbpt);
path g=(0,0)--(1,0)--(0,1)--(1,1)--cycle;
pair[] A2=shift(2,1)*rotate(25)*nodes(g,nbpt);
interpolate join=operator ..;
// interpolate join=operator --;

int n=40;
real step=1/n;
pen p1=0.8*red, p2=0.8*blue;

filldraw(join(morphing(A1,A2,0,join),cycle), p1);
filldraw(join(morphing(A1,A2,1,join),cycle), p2);

for (int i=0; i <= n; ++i) {
save();
filldraw(join(morphing(A1,A2,i*step,join),cycle),opacity(0.5)+interp(p1,p2,i*step));
restore();
}

A.movie();

```

Étiquettes : , , ,

## Animation with Asymptote – fig0170

Category: Animation,AsymptotePh. Ivaldi @ 0 h 20 min

 (Compiled with Asymptote version 1.86svn-r4626)
Movie flash (swf)
This animation is available in the Syracuse web site.
```
import graph;
import animate;
size(15cm);
settings.outformat="pdf";

pair[] interp(pair[] a1, pair[] a2, real k)
{
if(a1.length != a2.length) abort("interp: arrays have differents length.");
pair[] g;
int l=a1.length;
g=sequence(new pair(int j){
return interp(a1[j],a2[j],k);
},l);
return g;
}

path morphing(pair[] a1, pair[] a2, real k, interpolate join=operator --)
{
if(a1.length != a2.length) abort("morphing: arrays have differents length.");
return join(...interp(a1, a2, k));
}

pair[] nodes(path g, int n)
{
int np=round(n/length(g));
n=np == 0 ? n : np*length(g);
return sequence(new pair(int i){return point(g, length(g)*i/n);}, n);
}

animation A;

real f(real t){ return exp(cos(t))-2*cos(4*t)+sin(t/12)^5;}
path gf=polargraph(f,0,12*pi,1000);

int nbpt=1000;
pair[] A1=nodes(scale(5.5)*unitcircle,nbpt);
pair[] A2=shift(0,0)*nodes(gf,nbpt);
interpolate join=operator --;

int n=50;
real step=1/n;
pen p1=0.8*red, p2=0.8*blue;

for (int i=0; i <= n; ++i) {
save();
filldraw(join(morphing(A1,A2,1,join),cycle),
evenodd+p2);
filldraw(join(morphing(A1,A2,i*step,join),cycle),
evenodd+interp(p1,p2,i*step));