e-MATH
The most irrational number


 
 


Here is the TrueBasic program that generated the images of seed packing.
  ! seed packing


LET s = 400       ! set window size - large to make room for type
SET WINDOW 0,s,0,s
LET g = .5*(5^(.5)+1)   ! set spacing factor
!LET g = sqr(2)         
!Let g = pi
!Let g = 7/31
LET n = 80            ! set number of seeds
LET a = 30             ! set size of (eqil triang) seed
LET i = 1              ! initialize
LET m = a/2
DIM h(200)              ! NOTE this must be at least n

DO while i < n+1
   LET x =  (i*g - int(i*g)) * s     !calculate ith x-coordinate
   LET gim = x - m                  
      IF gim < 0 THEN  ! fix to be mod s
      LET gim = gim + s
      END IF
   LET gip = x + m
      IF gip > s THEN     ! fix to be mod s
      LET gip = gip - s
      END IF
   LET h(i) = m*sqr(3)   !h(i) will be height of APEX 
   LET j = 1
   DO while j < i
      LET xj = (j*g - int(j*g)) * s
      LET gjm = xj - m    
          IF gjm < 0 THEN
          LET gjm = gjm + s    ! fix to be mod s
          END IF
      LET gjp = xj + m      
          IF gjp > s THEN     ! fix to be mod s
          LET gjp = gjp - s
          END IF
      CALL hij( gim, gip, gjm, gjp)  
      IF hnew > h(i) THEN
         LET h(i) = hnew
      END IF
      LET j = j + 1
   LOOP
   CALL tri ( x, h(i))
   LET i = i + 1
   Pause .1
LOOP

SUB hij(gim, gip, gjm, gjp) !correction to height i to miss triangle j
   CALL dif (gip, gjm)           !determine overlap between base of
   IF d < 0 THEN                 !i-th triangle and base of j-th
        LET hnew = m*sqr(3)
        EXIT SUB
   END IF
   CALL dif (gip, gjm + m)
   IF d < 0 THEN
        LET hnew = h(j) + sqr(3)*(gip-gjm) 
        EXIT SUB
   END IF
   CALL dif (gip, gjp)
   IF d < 0 THEN
        LET hnew = h(j) + m*sqr(3) 
        EXIT SUB
   END IF
   CALL DIF (gim, gjm + m)
   IF d < 0 THEN
        LET hnew = h(j) + m*sqr(3) 
        EXIT SUB
   END IF
   CALL DIF (gim,gjp)
   IF d < 0 THEN
        LET hnew = h(j) - sqr(3)*(gim-gjp) 
        EXIT SUB
   END IF
   LET hnew = m*sqr(3)
END SUB


SUB dif (a, b)         !calculate distances mod s
    LET d = a - b
    IF d < -s/2 THEN
       LET d = d + s
       EXIT SUB
    END IF
    IF d > s/2 THEN
       LET d = d - s
       EXIT SUB
    END IF
END SUB


SUB tri (a,b)               !draw triangle and plot i inside
    PLOT a-m,b-m*sqr(3);a,b
    PLOT a,b;a+m,b-m*sqr(3)
    PLOT a-m,b-m*sqr(3); a+m,b-m*sqr(3)
    PLOT TEXT, at a-8,b-m*sqr(3)+2: str$(i)
END SUB
GET key zz
END




Back to previous irrational page.

Back to first irrational page.


HOME MEMBERS GOVERNMENT RESEARCH EMPLOYMENT AUTHORS MEETINGS MATH NEWS ORDERING SEARCH SITEMAP

 
Comments: webmaster@ams.org
© copyright 1999, American Mathematical Society.