You may view all the posts of the category "Generalities"
|
|
| (Compiled with Asymptote version 2.14svn-r5318) |
size(8cm,0);
pair[] self_intersection(path p, int n=100)
{
pair[] rpair=new pair[];
path tpath;
real [] tpoint;
real l=length(p);
int i=1;
for (real t1=0; t1<l ; t1+=l/n)
{
for (real t2=t1+2*l/n; t2<l; t2+=l/n)
{
tpoint=intersect(subpath(p,t1,t1+l/n),
subpath(p,t2,t2+l/n));
if (tpoint.length == 2)
{
rpair[i]=point(subpath(p,t1,t1+l/n),tpoint[0]);
++i;
}
}
}
return rpair;
}
void dott(pair[] pt, pen p)
{
for (int i=1 ; i<pt.length; ++i)
{
dot(pt[i], p);
}
}
srand(rand());
path p = randompath(15);
pair[] inter=self_intersection(p);
dott(inter, .8red);
draw(p);







