Advertisement
Guest User

Untitled

a guest
May 22nd, 2019
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.01 KB | None | 0 0
  1. import random as rd
  2.  
  3. leafduration = 4 # life time of a leaf
  4. leafold = 2 # age at which a leaf is considered as old
  5. maxorder = 4 # maximum number of branching order
  6. radinc = 0.01 # increment of radius through time
  7.  
  8. maxduration = lambda order : int(5./(order+1))+5 # life time of an apex
  9. branch_angle = lambda order : 8 # branching angle
  10. # number of axe at a ramification
  11. nb_axes = lambda order : rd.randint(2,4) if order > 2 else rd.randint(4-int((order+1)/2),5-int((order+1)/2))
  12. up_angle = lambda t,order : -5 # up angle for lateral branches
  13.  
  14. # number total of iterations of the system
  15. nbiter = sum([maxduration(o) for o in xrange(maxorder+1)])
  16.  
  17. module A # represent trunk apical meristem
  18. module B # represent apical meristem of lateral branches
  19. module L # whorl of leaf
  20. module I # Internode
  21.  
  22.  
  23. Axiom: _(0.05)@GcI(0.5,0.05)A(0,0)
  24.  
  25. derivation length: nbiter
  26. production:
  27. A(t,o) :
  28. if t < maxduration(o):
  29. # simply produces a metamer and ages the apex
  30. produce I(1,0.1)L(0,t)A(t+1,o)
  31. else:
  32. # produce a whorl of sympodial branches
  33. nbaxe = nb_axes(o)
  34. for i in xrange(nbaxe):
  35. nproduce [/(360*i/nbaxe)&(branch_angle(o))B(0,o+1)]
  36.  
  37.  
  38. B(t,o) :
  39. if t < maxduration(o):
  40. # simply produces a metamer and ages the apex
  41. # reorient smoothly the branch toward the up
  42. produce ^(up_angle(t,o))I(1,0.1)L(0,t)B(t+1,o)
  43. else:
  44. # produce a whorl of sympodial branches
  45. nbaxe = nb_axes(o)
  46. for i in xrange(nbaxe):
  47. nproduce [/(360*i/nbaxe)&(branch_angle(o))B(0,o+1)]
  48.  
  49. L(t,n) :
  50. # ages the leaf. If too old, removes
  51. if t < leafduration : produce L(t+1,n)
  52. else: produce *
  53.  
  54. # Increment radius of internodes
  55. I(s,r) --> I(s,r+radinc)
  56. _(r) --> _(r+radinc)
  57.  
  58. homomorphism:
  59. I(a,r) --> F(a,r)
  60.  
  61. L(t,p) :
  62. phi = 0 if p % 2 == 0 else 90 # phyllotactic angle
  63. col = 4 if t >= leafold else 2 # color is choosen according to age
  64. produce [/(phi)^(120);(col)~l(1)][/(phi)&(120);(col)~l(1)]
  65.  
  66. endlsystem
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement