Project

General

Profile

« Previous | Next » 

Revision 3002bef3

Added by Leszek Koltunski over 7 years ago

Move most of the NOISE complications from DynamicND classes to the parent Dynamic class.

View differences:

src/main/java/org/distorted/library/type/Dynamic1D.java
43 43
    float x;
44 44
    float vx;
45 45
    }
46
  
47
  private class VectorNoise
48
    {
49
    float[] nx;
50
   
51
    VectorNoise()
52
      {
53
      nx = new float[NUM_NOISE]; 
54
      nx[0] = mRnd.nextFloat();
55
      for(int i=1; i<NUM_NOISE; i++) nx[i] = nx[i-1]+mRnd.nextFloat();
56
      float sum = nx[NUM_NOISE-1] + mRnd.nextFloat();
57
      for(int i=0; i<NUM_NOISE; i++) nx[i] /=sum;
58
      }
59
    }
60
  
46

  
61 47
  private Vector<VectorCache> vc;
62 48
  private VectorCache tmp1, tmp2;
63 49
 
64 50
  private Vector<Static1D> vv;
65 51
  private Static1D prev, curr, next;
66
 
67
  private Vector<VectorNoise> vn;
68
  private VectorNoise tmpN;
69
  
70
///////////////////////////////////////////////////////////////////////////////////////////////////
71 52

  
72
  synchronized void createNoise()
73
    {
74
    if( vn==null )
75
      {
76
      vn = new Vector<>();
77
      for(int i=0; i<numPoints; i++) vn.add(new VectorNoise());
78
      }
79
    }
80
  
81 53
///////////////////////////////////////////////////////////////////////////////////////////////////
82 54
// no array bounds checking!
83 55
  
......
173 145
   
174 146
    cacheDirty = false;
175 147
    }
176
  
177
///////////////////////////////////////////////////////////////////////////////////////////////////
178 148

  
179
  private float noise(float time,int vecNum)
180
    {
181
    float lower, upper, len;  
182
    float d = time*(NUM_NOISE+1);
183
    int index = (int)d;
184
    if( index>=NUM_NOISE+1 ) index=NUM_NOISE;
185
    tmpN = vn.elementAt(vecNum);
186
   
187
    if( index==0 )
188
      {
189
      len = 1.0f/(NUM_NOISE+1);  
190
      return (len + mNoise*(tmpN.nx[0]-len))*d;
191
      }
192
    if( index==NUM_NOISE )
193
      {
194
      len = ((float)NUM_NOISE)/(NUM_NOISE+1);
195
      lower = len + mNoise*(tmpN.nx[NUM_NOISE-1]-len);   
196
      return (1.0f-lower)*(d-NUM_NOISE) + lower;   
197
      }
198
   
199
    len = ((float)index)/(NUM_NOISE+1);
200
    lower = len + mNoise*(tmpN.nx[index-1]-len);   
201
    len = ((float)index+1)/(NUM_NOISE+1); 
202
    upper = len + mNoise*(tmpN.nx[index  ]-len);
203
            
204
    return (upper-lower)*(d-index) + lower; 
205
    }
206
   
207 149
///////////////////////////////////////////////////////////////////////////////////////////////////
208 150
// PUBLIC API
209 151
///////////////////////////////////////////////////////////////////////////////////////////////////
......
212 154
 */
213 155
  public Dynamic1D()
214 156
    {
215
    vv = new Vector<>();
216
    vc = new Vector<>();
217
    vn = null;
218
    numPoints = 0;
219
    cacheDirty = false;
220
    mMode = MODE_LOOP;
221
    mDuration = 0;
222
    mCount = 0.5f;
157
    this(0,0.5f);
223 158
    }
224 159

  
225 160
///////////////////////////////////////////////////////////////////////////////////////////////////
......
242 177
    mMode = MODE_LOOP;
243 178
    mDuration = duration;
244 179
    mCount = count;
180
    mDimension = 1;
245 181
    }
246 182

  
247 183
///////////////////////////////////////////////////////////////////////////////////////////////////
......
295 231
      {
296 232
      vv.add(v);
297 233
     
298
      if( vn!=null ) vn.add(new VectorNoise());
234
      if( vn!=null ) vn.add(new VectorNoise(1));
299 235
       
300 236
      switch(numPoints)
301 237
        {
......
327 263
      {
328 264
      vv.add(location, v);
329 265
      
330
      if( vn!=null ) vn.add(new VectorNoise());
266
      if( vn!=null ) vn.add(new VectorNoise(1));
331 267
             
332 268
      switch(numPoints)
333 269
        {

Also available in: Unified diff