Advertisement
Guest User

Untitled

a guest
Aug 13th, 2015
370
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.61 KB | None | 0 0
  1. kr=0.25
  2. ke=0.8
  3. ks=1.5
  4. kc=0.1
  5.  
  6. for(i=0;i<size[argument0];i+=1)
  7. {
  8. for(j=0;j<size[argument0];j+=1)
  9. {
  10. water[i,j]=random(1)
  11. sediment[i,j]=0
  12. altitude[i,j]=ds_grid_get(argument0,i,j)+water[i,j]
  13. }
  14. }
  15.  
  16. repeat(10)
  17. {
  18. for(i=0;i<size[argument0];i+=1)
  19. {
  20. for(j=0;j<size[argument0];j+=1)
  21. {
  22. ds_grid_set(argument0,i,j,ds_grid_get(argument0,i,j)-ks*water[i,j])
  23.  
  24. if i!=0 && j!=0 && i!=size[argument0]-1 && j!=size[argument0]-1
  25. {
  26. water[i,j]=water[i,j]+kr
  27. altitude[i,j]=ds_grid_get(argument0,i,j)+water[i,j]
  28. sediment[i,j]=sediment[i,j]+ks*water[i,j]
  29.  
  30. dtotal=0
  31. if altitude[i,j]-altitude[i+1,j]>0 then dtotal+=altitude[i,j]-altitude[i+1,j]
  32. if altitude[i,j]-altitude[i-1,j]>0 then dtotal+=altitude[i,j]-altitude[i-1,j]
  33. if altitude[i,j]-altitude[i,j+1]>0 then dtotal+=altitude[i,j]-altitude[i,j+1]
  34. if altitude[i,j]-altitude[i,j-1]>0 then dtotal+=altitude[i,j]-altitude[i,j-1]
  35.  
  36. delta_a=altitude[i,j]-mean(altitude[i+1,j],altitude[i-1,j],altitude[i,j+1],altitude[i,j-1])
  37. if delta_a<0 then delta_a=0
  38.  
  39. if dtotal>0
  40. {
  41. for(k=0;k<4;k+=1;)
  42. {
  43. delta_w=0
  44. delta_s=0
  45. if k=0 then di=altitude[i,j]-altitude[i+1,j]
  46. if k=1 then di=altitude[i,j]-altitude[i-1,j]
  47. if k=2 then di=altitude[i,j]-altitude[i,j+1]
  48. if k=3 then di=altitude[i,j]-altitude[i,j-1]
  49.  
  50. if k=0 && di>0 && water[i,j]>0
  51. {
  52. delta_w=min(water[i,j],delta_a)*di/dtotal
  53. delta_s=sediment[i,j]*delta_w/water[i,j]
  54. water[i+1,j]+=delta_w
  55. sediment[i+1,j]+=delta_s
  56. }
  57. if k=1 && di>0 && water[i,j]>0
  58. {
  59. delta_w=min(water[i,j],delta_a)*di/dtotal
  60. delta_s=sediment[i,j]*delta_w/water[i,j]
  61. water[i-1,j]+=delta_w
  62. sediment[i-1,j]+=delta_s
  63. }
  64. if k=2 && di>0 && water[i,j]>0
  65. {
  66. delta_w=min(water[i,j],delta_a)*di/dtotal
  67. delta_s=sediment[i,j]*delta_w/water[i,j]
  68. water[i,j+1]+=delta_w
  69. sediment[i,j+1]+=delta_s
  70.  
  71. }
  72. if k=3 && di>0 && water[i,j]>0
  73. {
  74. delta_w=min(water[i,j],delta_a)*di/dtotal
  75. delta_s=sediment[i,j]*delta_w/water[i,j]
  76. water[i,j-1]+=delta_w
  77. sediment[i,j-1]+=delta_s
  78. }
  79.  
  80. if delta_w!=0 && delta_s!=0 && water[i,j]!=0
  81. {
  82. water[i,j]-=delta_w
  83. sediment[i,j]-=delta_s
  84. }
  85. }
  86. }
  87.  
  88. }
  89. water[i,j]*=ke
  90. m_max=kc*water[i,j]
  91. delta_m=max(0,sediment[i,j]-m_max)
  92.  
  93. sediment[i,j]=sediment[i,j]-delta_m
  94. ds_grid_set(argument0,i,j,ds_grid_get(argument0,i,j)+delta_m)
  95. }
  96. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement