Advertisement
Guest User

Untitled

a guest
Jun 25th, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.53 KB | None | 0 0
  1. int p = 30;
  2. int n = 5;
  3. float[] nodesX = new float[n*n];
  4. float[] nodesY = new float[n*n];
  5. int scale;
  6. float d = 0;
  7. float xc = p-1;
  8. float yc = p-1;
  9. float xmc = 1;
  10. float ymc = 1;
  11.  
  12. void setup(){
  13. size(720, 720);
  14. background(0);
  15. stroke(255);
  16. strokeWeight(1);
  17.  
  18. scale = height/p;
  19.  
  20. setNodes();
  21. }
  22.  
  23. void draw(){
  24. background(0);
  25.  
  26. lattice();
  27. display();
  28. update();
  29. }
  30.  
  31. void mouseClicked(){
  32. update();
  33. }
  34.  
  35. void update(){
  36. //background(0);
  37.  
  38. float x = (int) random(xmc, xc)*scale;
  39. float y = (int) random(ymc, yc)*scale;
  40. int i = distance(x, y);
  41. float r1 = 0.05;
  42. float r2 = 0.01;
  43.  
  44. fill(255, 122, 122);
  45. ellipse(x, y, 10, 10);
  46. fill(255);
  47.  
  48. stroke(255, 0, 255);
  49. line(x, y, nodesX[i], nodesY[i]);
  50. stroke(255);
  51.  
  52. for(int j = 0; j < 1; j++){
  53. if(nodesX[i] < x){
  54. nodesX[i] += r1*d;
  55. if(i+1 < nodesX.length){
  56. if(nodesX[i+1] < x) nodesX[i+1] += r2*d;
  57. else if(nodesX[i+1] > x) nodesX[i+1] -= r2*d;
  58. }
  59. if(i-1 >= 0){
  60. if(nodesX[i-1] < x) nodesX[i-1] += r2*d;
  61. else if(nodesX[i-1] > x) nodesX[i-1] -= r2*d;
  62. }
  63. if(i+n < nodesX.length){
  64. if(nodesX[i+n] < x) nodesX[i+n] += r2*d;
  65. else if(nodesX[i+n] > x) nodesX[i+n] -= r2*d;
  66. }
  67. if(i-n >= 0){
  68. if(nodesX[i-n] < x) nodesX[i-n] += r2*d;
  69. else if(nodesX[i-n] > x) nodesX[i-n] -= r2*d;
  70. }
  71. }else if(nodesX[i] > x){
  72. nodesX[i] = nodesX[i]-r1*d;
  73. if(i+1 < nodesX.length){
  74. if(nodesY[i+1] < x) nodesY[i+1] += r2*d;
  75. else if(nodesY[i+1] > x) nodesY[i+1] -= r2*d;
  76. }
  77. if(i-1 >= 0){
  78. if(nodesY[i-1] < x) nodesY[i-1] += r2*d;
  79. else if(nodesY[i-1] > x) nodesY[i-1] -= r2*d;
  80. }
  81. if(i+n < nodesX.length){
  82. if(nodesY[i+n] < x) nodesY[i+n] += r2*d;
  83. else if(nodesY[i+n] > x) nodesY[i+n] -= r2*d;
  84. }if(i-n >= 0){
  85. if(nodesY[i-n] < x) nodesY[i-n] += r2*d;
  86. else if(nodesY[i-n] > x) nodesY[i-n] -= r2*d;
  87. }
  88. }
  89. if(nodesY[i] < y){
  90. nodesY[i] += r1*d;
  91. if(i+1 < nodesY.length){
  92. if(nodesY[i+1] < y) nodesY[i+1] += r2*d;
  93. else if(nodesY[i+1] > y) nodesY[i+1] -= r2*d;
  94. }
  95. if(i-1 >= 0){
  96. if(nodesY[i-1] < y) nodesY[i-1] += r2*d;
  97. else if(nodesY[i-1] > y) nodesY[i-1] -= r2*d;
  98. }
  99. if(i+n < nodesY.length){
  100. if(nodesY[i+n] < y) nodesY[i+n] += r2*d;
  101. else if(nodesY[i+n] > y) nodesY[i+n] -= r2*d;
  102. }
  103. if(i-n >= 0){
  104. if(nodesY[i-n] < y) nodesY[i-n] += r2*d;
  105. else if(nodesY[i-n] > y) nodesY[i-n] -= r2*d;
  106. }
  107. }else if(nodesY[i] > y){
  108. nodesY[i] = nodesY[i]-r1*d;
  109. if(i+1 < nodesY.length){
  110. if(nodesY[i+1] < y) nodesY[i+1] += r2*d;
  111. else if(nodesY[i+1] > y) nodesY[i+1] -= r2*d;
  112. }
  113. if(i-1 >= 0){
  114. if(nodesY[i-1] < y) nodesY[i-1] += r2*d;
  115. else if(nodesY[i-1] > y) nodesY[i-1] -= r2*d;
  116. }
  117. if(i+n < nodesY.length){
  118. if(nodesY[i+n] < y) nodesY[i+n] += r2*d;
  119. else if(nodesY[i+n] > y) nodesY[i+n] -= r2*d;
  120. }if(i-n >= 0){
  121. if(nodesY[i-n] < y) nodesY[i-n] += r2*d;
  122. else if(nodesY[i-n] > y) nodesY[i-n] -= r2*d;
  123. }
  124. }
  125. }
  126. }
  127.  
  128. int distance(float x, float y){
  129. int min = 0;
  130.  
  131. for(int i = 0; i < nodesX.length; i++){
  132. if(i == 0){
  133. d = sqrt(pow(x - nodesX[i], 2) + pow(y - nodesY[i], 2));
  134. min = i;
  135. }else if(sqrt(pow(x - nodesX[i], 2) + pow(y - nodesY[i], 2)) < d){
  136. d = sqrt(pow(x - nodesX[i], 2) + pow(y - nodesY[i], 2));
  137. min = i;
  138. }
  139. }
  140.  
  141. return min;
  142. }
  143.  
  144. void display(){
  145. for(int i = 0; i < nodesX.length; i++){
  146. ellipse(nodesX[i], nodesY[i], 10, 10);
  147.  
  148. stroke(0, 255, 0);
  149. if(i+1 < nodesX.length && (i+1)%n != 0){
  150. line(nodesX[i], nodesY[i], nodesX[i+1], nodesY[i+1]);
  151. }
  152. if(i+n < nodesX.length){
  153. line(nodesX[i], nodesY[i], nodesX[i+n], nodesY[i+n]);
  154. }
  155. stroke(255);
  156. }
  157.  
  158. fill(0, 0, 255);
  159. ellipse(xmc*scale, ymc*scale, 10, 10);
  160. ellipse(xmc*scale, yc*scale, 10, 10);
  161. ellipse(xc*scale, yc*scale, 10, 10);
  162. ellipse(xc*scale, ymc*scale, 10, 10);
  163. fill(255);
  164. }
  165.  
  166. void setNodes(){
  167. for(int i = 0; i < nodesX.length; i++){
  168. nodesX[i] = (int) random(1, p-1)*scale;
  169. nodesY[i] = (int) random(1, p-1)*scale;
  170. }
  171. }
  172.  
  173. void lattice(){
  174. for(int i = scale; i <= width-scale; i+=scale){
  175. line(i, scale, i, height-scale);
  176. }
  177. for(int i = scale; i <= height-scale; i+=scale){
  178. line(scale, i, width-scale, i);
  179. }
  180. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement