Namespaces
Variants
Actions

Difference between revisions of "User:EddieBates/Asymptote-testing"

From Encyclopedia of Mathematics
Jump to: navigation, search
(Created page with "<asy> size(10cm,0); transform scale(pair center, real k) { return shift(center)*scale(k)*shift(-center); } path trk=(0,0)--(0,1); void tree(path p, int n, real a=30, real b=...")
 
 
(4 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
<asy>
 
<asy>
size(10cm,0);
+
size(12cm,0);
transform scale(pair center, real k) {
+
 
   return shift(center)*scale(k)*shift(-center);
+
import geometry;
 +
 
 +
triangle T=triangleAbc(90,Tan(30),1);
 +
 
 +
triangle[] reverse(triangle[] arr)
 +
{
 +
  triangle[] or;
 +
  int l=arr.length;
 +
  for(int i=0; i < l; ++i) {
 +
    or.push(arr[l-i-1]);
 +
  }
 +
   return or;
 +
}
 +
 
 +
triangle[] dissect(triangle T, int n, bool reverse=false)
 +
{
 +
  if(n <= 0) return new triangle[]{T};
 +
  triangle[] OT;
 +
 
 +
  point M=curpoint(T.AB,T.b()*Tan(30));
 +
  point H=projection(T.BC)*M;
 +
  triangle[] OT1, OT2, OT3;
 +
  OT.append(dissect(triangle(H,T.B,M),n-1,!reverse));
 +
  OT.append(reverse((dissect(triangle(H,T.C,M),n-1,!reverse))));
 +
  OT.append(dissect(triangle(T.A,T.C,M),n-1,!reverse));
 +
  return OT;
 
}
 
}
path trk=(0,0)--(0,1);
+
 
void tree(path p, int n, real a=30, real b=40, real r=.75) {
+
triangle[] DT=dissect(T,5);
   if (n!=0) {
+
point O=centroid(DT[0]);
    pair h=point(p,length(p));
+
path g;
    transform tb=rotate(180-b,h)*scale(h,r);
+
transform Ro=rotate(30,T.B), Re=reflect(T.BC), Roj;
    transform ta=rotate(-180+a,h)*scale(h,r);
+
 
    draw(p,n/3+1/(n+1)*green+n/(n+1)*brown);
+
for(int i : DT.keys) {
     tree(tb*reverse(p),n-1,a,b,r);
+
   O=incenter(DT[i]);
     tree(ta*reverse(p),n-1,a,b,r);
+
  g=g--O;
 +
}
 +
 
 +
g=reverse(g);
 +
path G, g=g--Re*reverse(g) ;
 +
for (int j=0; j < 12; j += 2) G=G--Ro^(-j)*g;
 +
 
 +
fill(G--cycle,0.3*blue);
 +
 
 +
for(int i : DT.keys) {
 +
  for (int j=0; j < 12; j += 2) {
 +
    Roj=Ro^j;
 +
     draw(Roj*DT[i],miterjoin+0.8*red);
 +
     draw(Roj*(Re*DT[i]),miterjoin+0.8*red);
 
   }
 
   }
 
}
 
}
  
tree(trk,12,a=25,b=40,r=.75);
+
draw(G--cycle,bp+miterjoin+0.9*yellow);
 +
 
 +
shipout(bbox(2mm, FillDraw(black, 1mm+miterjoin+deepblue)));
 
</asy>
 
</asy>
 +
  
 
<asy>
 
<asy>

Latest revision as of 15:33, 22 October 2014


How to Cite This Entry:
EddieBates/Asymptote-testing. Encyclopedia of Mathematics. URL: http://encyclopediaofmath.org/index.php?title=EddieBates/Asymptote-testing&oldid=33987