|
One can use the routine tremble in order to deform a specific path. |
|
Figure 0001: fig0010.asy (Compiled with Asymptote version 1.44svn-r3312) |
import trembling_pi; size(8cm); path cle=unitcircle; /* View the definition of path tremble(path,real,real,real,real) */ path tcle=tremble(cle,frequency=0.25,random=1); draw(tcle); path tri=(-1,-0.5)--(1,-0.5)--(0,0.75)--cycle; path ttri=tremble(tri,frequency=0.5,random=1.5); draw(ttri); shipout(bbox(3mm,invisible));
|
Using the routine startTrembling, all drawn paths are distorted. |
|
Figure 0002: fig0020.asy (Compiled with Asymptote version 1.44svn-r3312) |
import trembling_pi; size(8cm); /* View the definition of void startTrembling(real,real,real,real,bool */ startTrembling(); draw(unitcircle); draw((-1,-0.5)--(1,-0.5)--(0,0.75)--cycle); shipout(bbox(3mm,invisible));
|
When trembling is enabled with the routine startTrembling, all (most ?) doted points become "magnetic" automatically. So, if a path passes through a magnetized point with an numerous precision defined by magneticRadius (unit is bp in postscript coordinates), the resulting distorted path will also pass through the point. |
|
Figure 0003: fig0030.asy (Compiled with Asymptote version 1.44svn-r3312) |
import trembling_pi; startTrembling(); size(8cm); triangle T=triangleabc(6,7,8); draw(T,dot); draw(circle(T));
|
One can disabled this feature setting the parameter magnetizePoints to false. |
|
Figure 0004: fig0040.asy (Compiled with Asymptote version 1.44svn-r3312) |
import trembling_pi; startTrembling(magnetizePoints=false); size(8cm); triangle T=triangleabc(6,7,8); draw(T,dot); draw(circle(T));
|
One can magnetize non dotted points with the routines void magnetize(...triangle[]) and void magnetize(...pair[]). |
|
Figure 0005: fig0050.asy (Compiled with Asymptote version 1.44svn-r3312) |
import trembling_pi; startTrembling(); size(8cm); triangle T=triangleabc(6,7,8); draw(T); magnetize(T);/* View the definition of void magnetize(...triangle[]) */ draw(circle(T));
|
Here an other example with the incircle of a triangle. |
|
Figure 0006: fig0060.asy (Compiled with Asymptote version 1.44svn-r3312) |
import trembling_pi; startTrembling(angle=6, random=10); size(8cm); triangle T=triangleabc(6,7,8); dot(intouch(T)); draw(T); draw(incircle(T), 0.8*red);
|
|
|
Figure 0007: fig0070.asy (Compiled with Asymptote version 1.44svn-r3312) |
import trembling_pi; startTrembling(angle=6, frequency=1, random=10); size(8cm); triangle T=triangleabc(6,6,6); draw(T, dot); draw(bisector(T.AB)^^bisector(T.AC)^^bisector(T.BC), 0.8*red); addMargins(1cm,1cm);
|
|
|
Figure 0008: fig0080.asy (Compiled with Asymptote version 1.44svn-r3312) |
import trembling_pi; startTrembling(angle=6, frequency=1); size(8cm); triangle T=triangleabc(6,6,6); magnetize(centroid(T));/* View the definition of void magnetize(...pair[]) */ magnetize(T); draw(T, dot); draw(bisector(T.AB)^^bisector(T.AC)^^bisector(T.BC), 0.8*red); addMargins(1cm,1cm);
|
|
|
Figure 0009: fig0090.asy (Compiled with Asymptote version 1.44svn-r3312) |
/*From Mathematex*/ unitsize(1cm); import trembling_pi; import base_pi; // for rotatedLabel. startTrembling(); point pA = (0,0); point pB = (0,4); point pC = pB+6*(rotate(35)*unit(pA-pB)); point pD = pC+4*(rotate(-112)*unit(pB-pC)); point pE = pD+4*(rotate(-78)*unit(pC-pD)); point pFi = rotate(35,pE)*pD; dot(Label("$A$",align=SE),pA); dot(Label("$B$",align=NW),pB); dot(Label("$C$",align=SW),pC); dot(Label("$D$",align=SE),pD); dot(Label("$E$",align=NW),pE); line l1 = line(pA,false,pA-(1,0)); line l2 = line(pE,false,pFi); draw(l1); draw(l2); draw(pA--pB, StickIntervalMarker(1,2,size=6,angle=-45,red,true)); draw(rotatedLabel("$6 \; cm$"), pB--pC, N); draw(rotatedLabel("$4 \; cm$"), pC--pD, S, StickIntervalMarker(1,2,size=6,angle=-45,red)); draw(pD--pE, StickIntervalMarker(1,2,size=6,angle=-45,red)); markrightangle(pA-(1,0),pA,pB,blue); markangle(Label("$35^\circ$"),pA,pB,pC,radius=12mm,blue,StickIntervalMarker(i=1,n=1,size=4,blue)); markangle(Label("$112^\circ$"),pB,pC,pD,radius=7mm,blue); markangle(Label("$78^\circ$"),pC,pD,pE,radius=5mm,blue); markangle(pD,pE,pFi,radius=12mm,blue,StickIntervalMarker(i=1,n=1,size=4,blue)); addMargins(30mm,0mm,40mm,0mm); shipout(bbox(xmargin=1mm,invisible));
|
Note that the makers are also deformed... |
|
Figure 0010: fig0100.asy (Compiled with Asymptote version 1.44svn-r3312) |
import trembling_pi; size(12cm); startTrembling(); currentcoordsys=cartesiansystem((2,1),i=(1,0.5),j=(-0.25,1)); show(currentcoordsys); point A=(1,1); line l1=line(45,A); dot("$A$",A); draw("$(l_1)$",l1); point B=(3,1); line l2=line(-60,B); dot("$B$",B); draw("$(l_2)$",l2); markangleradiusfactor*=5; markangle(2,l1,l2,dir(-10),0.8*green,StickIntervalMarker(i=1,n=2)); markangle(2,radius=-0.5*markangleradius(), l2,l1,dir(190),0.8*blue); markangle(l2,l1,dir(190),Arrow,StickIntervalMarker(i=1,n=2)); markangle((string) sharpdegrees(l2,l1), radius=1.5*markangleradius(), l2,l1,dir(170),Arrow,red);
|
With magnetizePoints=false. |
|
Figure 0011: fig0110.asy (Compiled with Asymptote version 1.44svn-r3312) |
import trembling_pi; startTrembling(magnetizePoints=false); size(12cm,0); point A=(0,0), B=(5,2), C=(3,4); triangle t=triangle(A,B,C), et1=triangle(A,B,rotate(-60,A)*B), et2=triangle(B,C,rotate(-60,B)*C), et3=triangle(C,A,rotate(-60,C)*A); draw(et1^^et2^^et3, 0.8*red); dot(et1.Path()^^et2.Path()^^et3.Path()); draw(t); label(t, alignFactor=2.5); point[] F=fermat(t); dot("$F_1$",F[0], S, red); dot("$F_2$",F[1], W, purple); draw(circle(et1)^^circle(et2)^^circle(et3), 0.8*green); draw(line(C,et1.C)^^line(A,et2.C)^^line(B,et3.C), 0.8*blue); label("$N_1$",et1.VC); label("$N_2$",et2.VC); label("$N_3$",et3.VC);
|
The same code with magnetizePoints=true. |
|
Figure 0012: fig0120.asy (Compiled with Asymptote version 1.44svn-r3312) |
import trembling_pi; startTrembling(); size(12cm,0); point A=(0,0), B=(5,2), C=(3,4); triangle t=triangle(A,B,C), et1=triangle(A,B,rotate(-60,A)*B), et2=triangle(B,C,rotate(-60,B)*C), et3=triangle(C,A,rotate(-60,C)*A); draw(et1^^et2^^et3, 0.8*red); dot(et1.Path()^^et2.Path()^^et3.Path()); draw(t); label(t, alignFactor=2.5); point[] F=fermat(t); dot("$F_1$",F[0], S, red); dot("$F_2$",F[1], W, purple); draw(circle(et1)^^circle(et2)^^circle(et3), 0.8*green); draw(line(C,et1.C)^^line(A,et2.C)^^line(B,et3.C), 0.8*blue); label("$N_1$",et1.VC); label("$N_2$",et2.VC); label("$N_3$",et3.VC);
|
|
|
Figure 0013: fig0130.asy (Compiled with Asymptote version 1.44svn-r3312) |
import trembling_pi; size(12cm); startTrembling(); conic co[]; co[0]=circle((0,0),1); draw(co[0]); co[1]=ellipse((0,0),4,1); draw(co[1]); co[2]=parabola((0,0),1,90); draw(co[2]); hyperbola h=hyperbola((-1,0),(1,0),1.2,byvertices); co[3]=h; draw(co[3]); draw(h.A1,grey); draw(h.A2,grey); dotfactor *= 1; for (int i=0; i < 4; ++i) { dot(intersectionpoints(h.A1,co[i]),blue); dot(intersectionpoints(h.A2,co[i]),blue); for (int j=i+1; j < 4; ++j) dot(intersectionpoints(co[i],co[j]), red); }
|
The two further examples show the influence of the parameter frequency. |
|
Figure 0014: fig0140.asy (Compiled with Asymptote version 1.44svn-r3312) |
import trembling_pi; size(8cm); startTrembling(angle=10, random=10, frequency=0.1); draw(unitcircle);
|
|
|
Figure 0015: fig0150.asy (Compiled with Asymptote version 1.44svn-r3312) |
import trembling_pi; size(8cm); startTrembling(angle=10, random=10, frequency=0.5); draw(unitcircle);
Dernière modification/Last modified: Sat Aug 16 15:02:26 CEST 2008
Philippe Ivaldi