duck

duck

Jun 17th, 2010
164
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2.  
  3.  
  4. static function RandomArray3D(quantity : int, randomMin : Vector3, randomMax : Vector3, distanceApart : float) : Vector3[]
  5. {
  6.     var positions = new Vector3[quantity];
  7.    
  8.     for (i = 0; i < positions.length; i++)
  9.     {
  10.         positions[i] = Vector3(
  11.             Random.Range(randomMin.x, randomMax.x),
  12.             Random.Range(randomMin.y, randomMax.y),
  13.             Random.Range(randomMin.z, randomMax.z)
  14.         );     
  15.     }
  16.    
  17.    
  18.     var anyOverlapping = true;
  19.     while (anyOverlapping)
  20.     {
  21.         anyOverlapping = false;
  22.         for (var p1n = 0; p1n < positions.Length-1; ++p1n) {
  23.             for (var p2n = (p1n+1); p2n < positions.Length; ++p2n) {
  24.                 var p1 = positions[p1n];
  25.                 var p2 = positions[p2n];
  26.                 // add check for if p1=p2 here!
  27.                 var delta = p2n-p1n;
  28.                 var distance = delta.magnitude;
  29.                 if (distance < threshold) {
  30.                     var resolveDist = (threshold-distance) * 0.5;
  31.                     positions[p1n] = p1 - delta.normalized * resolveDist;
  32.                     positions[p2n] = p2 + delta.normalized * resolveDist;
  33.                     anyOverlapping = true;
  34.                 }
  35.             }
  36.         }
  37.     }  
  38.    
  39.    
  40.     return positions;
  41. }
Add Comment
Please, Sign In to add comment