2012-02-25 38 views
-1

我需要一個例程來獲得一些隨機點的概率較高的隨機2D向量。斑點也可以是矩形。請幫幫我。在熱點上隨機繪圖

功能必須看起來像這些

public Vector GetRandomHotSpotVectors(Vector minPosition, Vector maxPostion, int spotsCount, float minSpotSize, float maxSpotSize, int VectorCount); 

var vectors = GetRandomHotSpotVectors(new Vector(0,0), new Vector(200,200), 2, 20, 30, 44); 

enter image description here

回答

0
public static readonly Random Rand = new Random();   

    public static float NextFloat(float min, float max) 
    { 
     return min + ((float)Rand.NextDouble() * (max - min)); 
    } 

    public static Vector4[] GetHotSpotVectors(
     Vector2 leftTop, 
     Vector2 rightBottom, 
     int spotsCount, 
     float minSpotSize, 
     float maxSpotSize, 
     float minVectorObjSize, 
     float maxVectorObjSize, 
     int vectorCount) 
    { 
     var vectors = new Vector4[vectorCount]; 
     var vectorsProceeded = 0; 

     for (var i = 0; i != spotsCount; i++) 
     { 
      var spotSize = NextFloat(minSpotSize, maxSpotSize); 
      var left = NextFloat(leftTop.X, rightBottom.X - spotSize); 
      var top = NextFloat(leftTop.Y, rightBottom.Y - spotSize); 
      var right = left + spotSize; 
      var bottom = top + spotSize; 

      var currSpotCount = vectorCount/spotsCount; 

      for (var j = vectorsProceeded; j < vectorsProceeded + currSpotCount; j++) 
      { 
       var vecObjSize = NextFloat(minSpotSize, maxVectorObjSize); 
       vectors[j] = new Vector4(
        NextFloat(left, right), 
        NextFloat(top, bottom), 
        vecObjSize, 
        vecObjSize); 
      } 
      vectorsProceeded += currSpotCount; 
     } 

     return vectors; 
    }