Advertisement
Guest User

Untitled

a guest
Sep 1st, 2018
166
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.99 KB | None | 0 0
  1.  
  2. float H = 0.99 ; //resistance to movement, lower more hard to move//
  3.  
  4. float HH = 0.01 ; //elasticity or bounce factor, higher, more elastic more bounce//
  5.  
  6. float X[] = new float[Nmax+1] ; float Y[] = new float[Nmax+1] ; float Z[] = new float[Nmax+1] ;
  7. float V[] = new float[Nmax+1] ; float dV[] = new float[Nmax+1] ;
  8. float L ; float R = 2*sqrt((4*PI*(200*200)/Nmax)/(2*sqrt(3))) ;
  9. float Lmin ; int N ; int NN ;
  10. float KX ; float KY ; float KZ ;
  11. float KV ; float KdV ; int K ;
  12.  
  13.  
  14. void setup(){
  15.  
  16. size(1920,600) ;
  17. background(0) ;
  18. noSmooth() ;
  19. stroke(255,255,255) ;
  20. fill(50,50,50) ;
  21.  
  22. for ( N = 0 ; N <= Nmax ; N++ ){
  23. X[N] = random(-300,+300) ;
  24. Y[N] = random(-300,+300) ;
  25. Z[N] = random(-300,+300) ;
  26. }
  27.  
  28. } // setup()
  29.  
  30.  
  31.  
  32. void draw(){
  33.  
  34. background(0,0,0) ;
  35.  
  36.  
  37. for ( N = 0 ; N <= Nmax ; N++ ){
  38. for ( NN = N+1 ; NN <= Nmax ; NN++ ){
  39. L = sqrt(((X[N]-X[NN])*(X[N]-X[NN]))+((Y[N]-Y[NN])*(Y[N]-Y[NN]))) ;
  40. L = sqrt(((Z[N]-Z[NN])*(Z[N]-Z[NN]))+(L*L)) ;
  41. if ( L < R ){
  42. X[N] = X[N] - ((X[NN]-X[N])*((R-L)/(2*L))) ;
  43. Y[N] = Y[N] - ((Y[NN]-Y[N])*((R-L)/(2*L))) ;
  44. Z[N] = Z[N] - ((Z[NN]-Z[N])*((R-L)/(2*L))) ;
  45. X[NN] = X[NN] + ((X[NN]-X[N])*((R-L)/(2*L))) ;
  46. Y[NN] = Y[NN] + ((Y[NN]-Y[N])*((R-L)/(2*L))) ;
  47. Z[NN] = Z[NN] + ((Z[NN]-Z[N])*((R-L)/(2*L))) ;
  48. dV[N] = dV[N] + ((V[NN]-V[N])/M) ;
  49. dV[NN] = dV[NN] - ((V[NN]-V[N])/M) ;
  50. stroke(125+(Z[N]/2),125+(Z[N]/2),125+(Z[N]/2)) ;
  51. line(X[N]*0.6*(200+V[N])/200+300,Y[N]*0.6*(200+V[N])/200+300,X[NN]*0.6*(200+V[NN])/200+300,Y[NN]*0.6*(200+V[NN])/200+300) ;
  52. }
  53. if ( Z[N] > Z[NN] ){
  54. KX = X[N] ; KY = Y[N] ; KZ = Z[N] ; KV = V[N] ; KdV = dV[N] ;
  55. X[N] = X[NN] ; Y[N] = Y[NN] ; Z[N] = Z[NN] ; V[N] = V[NN] ; dV[N] = dV[NN] ;
  56. X[NN] = KX ; Y[NN] = KY ; Z[NN] = KZ ; V[NN] = KV ; dV[NN] = KdV ;
  57. }
  58. }
  59. L = sqrt((X[N]*X[N])+(Y[N]*Y[N])) ;
  60. L = sqrt((Z[N]*Z[N])+(L*L)) ;
  61. X[N] = X[N] + (X[N]*(200-L)/(2*L)) ;
  62. Y[N] = Y[N] + (Y[N]*(200-L)/(2*L)) ;
  63. Z[N] = Z[N] + (Z[N]*(200-L)/(2*L)) ;
  64. KZ = Z[N] ; KX = X[N] ;
  65. Z[N] = (KZ*cos(float(300-mouseX)/40000))-(KX*sin(float(300-mouseX)/40000)) ;
  66. X[N] = (KZ*sin(float(300-mouseX)/40000))+(KX*cos(float(300-mouseX)/40000)) ;
  67. KZ = Z[N] ; KY = Y[N] ;
  68. Z[N] = (KZ*cos(float(300-mouseY)/40000))-(KY*sin(float(300-mouseY)/40000)) ;
  69. Y[N] = (KZ*sin(float(300-mouseY)/40000))+(KY*cos(float(300-mouseY)/40000)) ;
  70. dV[N] = dV[N] - (V[N]*HH) ;
  71. V[N] = V[N] + dV[N] ; dV[N] = dV[N] * H ;
  72. }
  73.  
  74. } // draw()
  75.  
  76. void mousePressed(){
  77.  
  78. Lmin = 600 ; NN = 0 ;
  79. for ( N = 0 ; N <= Nmax ; N++ ){
  80. L = sqrt(((mouseX-(300+X[N]))*(mouseX-(300+X[N])))+((mouseY-(300+Y[N]))*(mouseY-(300+Y[N])))) ;
  81. if ( Z[N] > 0 && L < Lmin ){ NN = N ; Lmin = L ; }
  82.  
  83. }
  84. if ( K == 0 ){ dV[NN] = -70 ; K = 1 ; }
  85. else{ dV[NN] = +70 ; K = 0 ; }
  86.  
  87. } // mousePressed()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement