\documentclass[border=10pt]{standalone}\usepackage{asymptote}\begin{document}\begin{asy}[inline=true]import math;import graph;struct construct{pair[] loc;string[] name;pair[] namePos;guide[] straight;pen[] straightPen;guide[] circ;pen[] circPen;pen thinpen;bool pqr(pair p, pair q, pair r){return (p.x*(q.y-r.y)+(r.y-p.y)*q.x+r.x*(p.y-q.y))>0;};pair lastpoint(){assert(loc.length>0);return loc[loc.length-1];}pair prevpoint(){assert(loc.length>1);return loc[loc.length-2];}pair newpoint(pair ploc, string pname="", pair npos=(0,0)){loc.push(ploc);name.push(pname);namePos.push(npos);return loc[loc.length-1];}guide newstraight(pair A, pair B, pen p=nullpen){straight.push(A--B);
Source: TeX.SE