double Perlin::noise3(double vec[3])
{
	int bx0, bx1, by0, by1, bz0, bz1, b00, b10, b01, b11;
	double rx0, rx1, ry0, ry1, rz0, rz1, *q, sy, sz, a, b, c, d, t, u, v;
	int i, j;
	if (mStart)
	{
		srand(mSeed);
		mStart = false;
		init();
	}
	setup(0, bx0,bx1, rx0,rx1);
	setup(1, by0,by1, ry0,ry1);
	setup(2, bz0,bz1, rz0,rz1);
	i = p[ bx0 ];
	j = p[ bx1 ];	b00 = p[ i + by0 ];
	b10 = p[ j + by0 ];
	b01 = p[ i + by1 ];
	b11 = p[ j + by1 ];	t  = s_curve(rx0);
	sy = s_curve(ry0);
	sz = s_curve(rz0);
	#define at3(rx,ry,rz) ( rx * q[0] + ry * q[1] + rz * q[2] )
	q = g3[ b00 + bz0 ];
	u = at3(rx0,ry0,rz0);
	q = g3[ b10 + bz0 ] ; v = at3(rx1,ry0,rz0);
	a = lerp(t, u, v);	q = g3[ b01 + bz0 ] ; u = at3(rx0,ry1,rz0);
	q = g3[ b11 + bz0 ] ; v = at3(rx1,ry1,rz0);
	b = lerp(t, u, v);	c = lerp(sy, a, b);	q = g3[ b00 + bz1 ] ; u = at3(rx0,ry0,rz1);
	q = g3[ b10 + bz1 ] ; v = at3(rx1,ry0,rz1);
	a = lerp(t, u, v);	q = g3[ b01 + bz1 ] ; u = at3(rx0,ry1,rz1);
	q = g3[ b11 + bz1 ] ; v = at3(rx1,ry1,rz1);
	b = lerp(t, u, v);	d = lerp(sy, a, b);
	return lerp(sz, c, d);
}
double PerlinNoise::noise3(double f1, double f2, double f3)
{
  int bx0, bx1, by0, by1, bz0, bz1, b00, b10, b01, b11;
  double rx0, rx1, ry0, ry1, rz0, rz1, *q, sy, sz, a, b, c, d, t, u, v;
  register int i, j;

  double vec[3];  

  vec[0] = f1;
  vec[1] = f2;
  vec[2] = f3;
  
  if (start) {
    start = 0;
    init();
  }
  
  setup(0, bx0,bx1, rx0,rx1);
  setup(1, by0,by1, ry0,ry1);
  setup(2, bz0,bz1, rz0,rz1);
  
  i = p[ bx0 ];
  j = p[ bx1 ];
  
  b00 = p[ i + by0 ];
  b10 = p[ j + by0 ];
  b01 = p[ i + by1 ];
  b11 = p[ j + by1 ];
  
  t  = s_curve(rx0);
  sy = s_curve(ry0);
  sz = s_curve(rz0);
  
#define at3(rx,ry,rz) ( rx * q[0] + ry * q[1] + rz * q[2] )
  
  q = g3[ b00 + bz0 ] ; u = at3(rx0,ry0,rz0);
  q = g3[ b10 + bz0 ] ; v = at3(rx1,ry0,rz0);
  a = lerp(t, u, v);
  
  q = g3[ b01 + bz0 ] ; u = at3(rx0,ry1,rz0);
  q = g3[ b11 + bz0 ] ; v = at3(rx1,ry1,rz0);
  b = lerp(t, u, v);
  
  c = lerp(sy, a, b);
  
  q = g3[ b00 + bz1 ] ; u = at3(rx0,ry0,rz1);
  q = g3[ b10 + bz1 ] ; v = at3(rx1,ry0,rz1);
  a = lerp(t, u, v);
  
  q = g3[ b01 + bz1 ] ; u = at3(rx0,ry1,rz1);
  q = g3[ b11 + bz1 ] ; v = at3(rx1,ry1,rz1);
  b = lerp(t, u, v);
  
  d = lerp(sy, a, b);
  
  return lerp(sz, c, d);
}
Example #3
0
	float Perlin::noise3(float vec[3])
	{
		int bx0, bx1, by0, by1, bz0, bz1, b00, b10, b01, b11;
		float rx0, rx1, ry0, ry1, rz0, rz1, *q, sy, sz, a, b, c, d, t, u, v;
		int i, j;
		
		/* commented out by mark
		if (mStart)
		{
			srand(mSeed);
			mStart = false;
			init();
		}
		*/
		
		SETUP(0, bx0,bx1, rx0,rx1);
		SETUP(1, by0,by1, ry0,ry1);
		SETUP(2, bz0,bz1, rz0,rz1);
		
		i = p[ bx0 ];
		j = p[ bx1 ];
		
		b00 = p[ i + by0 ];
		b10 = p[ j + by0 ];
		b01 = p[ i + by1 ];
		b11 = p[ j + by1 ];
		
		t  = fade(rx0);
		sy = fade(ry0);
		sz = fade(rz0);
		
#define at3(rx,ry,rz) ( rx * q[0] + ry * q[1] + rz * q[2] )
		
		q = g3[ b00 + bz0 ] ; u = at3(rx0,ry0,rz0);
		q = g3[ b10 + bz0 ] ; v = at3(rx1,ry0,rz0);
		a = lerp(t, u, v);
		
		q = g3[ b01 + bz0 ] ; u = at3(rx0,ry1,rz0);
		q = g3[ b11 + bz0 ] ; v = at3(rx1,ry1,rz0);
		b = lerp(t, u, v);
		
		c = lerp(sy, a, b);
		
		q = g3[ b00 + bz1 ] ; u = at3(rx0,ry0,rz1);
		q = g3[ b10 + bz1 ] ; v = at3(rx1,ry0,rz1);
		a = lerp(t, u, v);
		
		q = g3[ b01 + bz1 ] ; u = at3(rx0,ry1,rz1);
		q = g3[ b11 + bz1 ] ; v = at3(rx1,ry1,rz1);
		b = lerp(t, u, v);
		
		d = lerp(sy, a, b);
		
		return lerp(sz, c, d);
	}
Example #4
0
// 3차원 노이즈 생성
float GNoise::Noise3(float vec[3])
{
	int bx0, bx1, by0, by1, bz0, bz1, b00, b10, b01, b11;
	float rx0, rx1, ry0, ry1, rz0, rz1, *q, sy, sz, a, b, c, d, t, u, v;
	register int i, j;

	if (m_IsStart) 
	{
		m_IsStart = 0;
		Init();
	}

	Setup( vec[0], bx0, bx1, rx0, rx1 );
	Setup( vec[1], by0, by1, ry0, ry1 );
	Setup( vec[2], bz0, bz1, rz0, rz1 );	

	i = m_iRandomIndex[ bx0 ];
	j = m_iRandomIndex[ bx1 ];

	b00 = m_iRandomIndex[ i + by0 ];
	b10 = m_iRandomIndex[ j + by0 ];
	b01 = m_iRandomIndex[ i + by1 ];
	b11 = m_iRandomIndex[ j + by1 ];

	t  = s_curve(rx0);
	sy = s_curve(ry0);
	sz = s_curve(rz0);

#define at3(rx,ry,rz) ( rx * q[0] + ry * q[1] + rz * q[2] )

	q = m_vRandomData[ b00 + bz0 ] ; u = at3(rx0,ry0,rz0);
	q = m_vRandomData[ b10 + bz0 ] ; v = at3(rx1,ry0,rz0);
	a = lerp(t, u, v);

	q = m_vRandomData[ b01 + bz0 ] ; u = at3(rx0,ry1,rz0);
	q = m_vRandomData[ b11 + bz0 ] ; v = at3(rx1,ry1,rz0);
	b = lerp(t, u, v);

	c = lerp(sy, a, b);

	q = m_vRandomData[ b00 + bz1 ] ; u = at3(rx0,ry0,rz1);
	q = m_vRandomData[ b10 + bz1 ] ; v = at3(rx1,ry0,rz1);
	a = lerp(t, u, v);

	q = m_vRandomData[ b01 + bz1 ] ; u = at3(rx0,ry1,rz1);
	q = m_vRandomData[ b11 + bz1 ] ; v = at3(rx1,ry1,rz1);
	b = lerp(t, u, v);

	d = lerp(sy, a, b);

	return lerp(sz, c, d);
}
Example #5
0
float noise3(float vec[3])
{
	int bx0, bx1, by0, by1, bz0, bz1, b00, b10, b01, b11;
	float rx0, rx1, ry0, ry1, rz0, rz1, *q, sy, sz, a, b, c, d, t, u, v;
    int i;
    int j;
    
	if (start) {
		start = 0;
		init_noise();
	}
    
	setup_noise(0, bx0,bx1, rx0,rx1);
	setup_noise(1, by0,by1, ry0,ry1);
	setup_noise(2, bz0,bz1, rz0,rz1);
    
	i = p[ bx0 ];
	j = p[ bx1 ];
    
	b00 = p[ i + by0 ];
	b10 = p[ j + by0 ];
	b01 = p[ i + by1 ];
	b11 = p[ j + by1 ];
    
	t  = s_curve(rx0);
	sy = s_curve(ry0);
	sz = s_curve(rz0);
    
#define at3(rx,ry,rz) ( rx * q[0] + ry * q[1] + rz * q[2] )
    
	q = g3[ b00 + bz0 ] ; u = at3(rx0,ry0,rz0);
	q = g3[ b10 + bz0 ] ; v = at3(rx1,ry0,rz0);
	a = lerp(t, u, v);
    
	q = g3[ b01 + bz0 ] ; u = at3(rx0,ry1,rz0);
	q = g3[ b11 + bz0 ] ; v = at3(rx1,ry1,rz0);
	b = lerp(t, u, v);
    
	c = lerp(sy, a, b);
    
	q = g3[ b00 + bz1 ] ; u = at3(rx0,ry0,rz1);
	q = g3[ b10 + bz1 ] ; v = at3(rx1,ry0,rz1);
	a = lerp(t, u, v);
    
	q = g3[ b01 + bz1 ] ; u = at3(rx0,ry1,rz1);
	q = g3[ b11 + bz1 ] ; v = at3(rx1,ry1,rz1);
	b = lerp(t, u, v);
    
	d = lerp(sy, a, b);
    
	return lerp(sz, c, d);
}
Example #6
0
float CPerlinNoise3D::noise(const Fvector3& vec)
{
	int bx0, bx1, by0, by1, bz0, bz1, b00, b10, b01, b11;
	float rx0, rx1, ry0, ry1, rz0, rz1, *q, sy, sz, a, b, c, d, t, u, v;
	int i, j;

	if (!mReady){ 
		srand(mSeed);
		mReady = true;
		init();
	}

	setup(0, bx0,bx1, rx0,rx1);
	setup(1, by0,by1, ry0,ry1);
	setup(2, bz0,bz1, rz0,rz1);

	i = p[ bx0 ];
	j = p[ bx1 ];

	b00 = p[ i + by0 ];
	b10 = p[ j + by0 ];
	b01 = p[ i + by1 ];
	b11 = p[ j + by1 ];

	t  = s_curve(rx0);
	sy = s_curve(ry0);
	sz = s_curve(rz0);

#define at3(rx,ry,rz) ( rx * q[0] + ry * q[1] + rz * q[2] )

	q = g3[ b00 + bz0 ] ; u = at3(rx0,ry0,rz0);
	q = g3[ b10 + bz0 ] ; v = at3(rx1,ry0,rz0);
	a = lerp(t, u, v);

	q = g3[ b01 + bz0 ] ; u = at3(rx0,ry1,rz0);
	q = g3[ b11 + bz0 ] ; v = at3(rx1,ry1,rz0);
	b = lerp(t, u, v);

	c = lerp(sy, a, b);

	q = g3[ b00 + bz1 ] ; u = at3(rx0,ry0,rz1);
	q = g3[ b10 + bz1 ] ; v = at3(rx1,ry0,rz1);
	a = lerp(t, u, v);

	q = g3[ b01 + bz1 ] ; u = at3(rx0,ry1,rz1);
	q = g3[ b11 + bz1 ] ; v = at3(rx1,ry1,rz1);
	b = lerp(t, u, v);

	d = lerp(sy, a, b);

	return lerp(sz, c, d);
}
float PerlinNoise::noise3( float vec[3] )
{
	int bx0, bx1, by0, by1, bz0, bz1, b00, b10, b01, b11;
	float rx0, rx1, ry0, ry1, rz0, rz1, *q, sy, sz, a, b, c, d, t, u, v;
	register int i, j;

	if (start) {
		start = false;
		init();
	}

	setup(0, bx0,bx1, rx0,rx1);
	setup(1, by0,by1, ry0,ry1);
	setup(2, bz0,bz1, rz0,rz1);

	i = p[ bx0 ];
	j = p[ bx1 ];

	b00 = p[ i + by0 ];
	b10 = p[ j + by0 ];
	b01 = p[ i + by1 ];
	b11 = p[ j + by1 ];

	t  = s_curve(rx0);
	sy = s_curve(ry0);
	sz = s_curve(rz0);

#define at3(rx,ry,rz) ( rx * q[0] + ry * q[1] + rz * q[2] )

	q = g3[ b00 + bz0 ] ; u = at3(rx0,ry0,rz0);
	q = g3[ b10 + bz0 ] ; v = at3(rx1,ry0,rz0);
	a = Math::lerp(t, u, v);

	q = g3[ b01 + bz0 ] ; u = at3(rx0,ry1,rz0);
	q = g3[ b11 + bz0 ] ; v = at3(rx1,ry1,rz0);
	b = Math::lerp(t, u, v);

	c = Math::lerp(sy, a, b);

	q = g3[ b00 + bz1 ] ; u = at3(rx0,ry0,rz1);
	q = g3[ b10 + bz1 ] ; v = at3(rx1,ry0,rz1);
	a = Math::lerp(t, u, v);

	q = g3[ b01 + bz1 ] ; u = at3(rx0,ry1,rz1);
	q = g3[ b11 + bz1 ] ; v = at3(rx1,ry1,rz1);
	b = Math::lerp(t, u, v);

	d = Math::lerp(sy, a, b);

	return Math::lerp(sz, c, d);
}
Example #8
0
File: Noise.cpp Project: aalex/osg
double noise3(double vec[3])
{
   int bx0, bx1, by0, by1, bz0, bz1, b00, b10, b01, b11;
   double rx0, rx1, ry0, ry1, rz0, rz1, *q, sy, sz, a, b, c, d, t, u, v;
   int i, j;

   if (start) {
      start = 0;
      initNoise();
   }

   setup(0, bx0,bx1, rx0,rx1);
   setup(1, by0,by1, ry0,ry1);
   setup(2, bz0,bz1, rz0,rz1);

   i = p[ bx0 ];
   j = p[ bx1 ];

   b00 = p[ i + by0 ];
   b10 = p[ j + by0 ];
   b01 = p[ i + by1 ];
   b11 = p[ j + by1 ];

   t  = s_curve(rx0);
   sy = s_curve(ry0);
   sz = s_curve(rz0);

   q = g3[ b00 + bz0 ] ; u = at3(rx0,ry0,rz0);
   q = g3[ b10 + bz0 ] ; v = at3(rx1,ry0,rz0);
   a = lerp(t, u, v);

   q = g3[ b01 + bz0 ] ; u = at3(rx0,ry1,rz0);
   q = g3[ b11 + bz0 ] ; v = at3(rx1,ry1,rz0);
   b = lerp(t, u, v);

   c = lerp(sy, a, b);

   q = g3[ b00 + bz1 ] ; u = at3(rx0,ry0,rz1);
   q = g3[ b10 + bz1 ] ; v = at3(rx1,ry0,rz1);
   a = lerp(t, u, v);

   q = g3[ b01 + bz1 ] ; u = at3(rx0,ry1,rz1);
   q = g3[ b11 + bz1 ] ; v = at3(rx1,ry1,rz1);
   b = lerp(t, u, v);

   d = lerp(sy, a, b);

   //fprintf(stderr, "%f\n", lerp(sz, c, d));

   return lerp(sz, c, d);
}
Example #9
0
float noise3(float vec[3])
{
    int bx0, bx1, by0, by1, bz0, bz1, b00, b10, b01, b11;
    float rx0, rx1, ry0, ry1, rz0, rz1, *q, sy, sz, a, b, c, d, t, u, v;
    register int i, j;

    if (start) {
	start = 0;
	init();
    }

    setup(0, bx0,bx1, rx0,rx1);
    setup(1, by0,by1, ry0,ry1);
    setup(2, bz0,bz1, rz0,rz1);

    i = p[ bx0 ];
    j = p[ bx1 ];

    b00 = p[ i + by0 ];
    b10 = p[ j + by0 ];
    b01 = p[ i + by1 ];
    b11 = p[ j + by1 ];

    t  = s_curve(rx0);
    sy = s_curve(ry0);
    sz = s_curve(rz0);


    q = g3[ b00 + bz0 ] ; u = at3(rx0,ry0,rz0);
    q = g3[ b10 + bz0 ] ; v = at3(rx1,ry0,rz0);
    a = lerp(t, u, v);

    q = g3[ b01 + bz0 ] ; u = at3(rx0,ry1,rz0);
    q = g3[ b11 + bz0 ] ; v = at3(rx1,ry1,rz0);
    b = lerp(t, u, v);

    c = lerp(sy, a, b);

    q = g3[ b00 + bz1 ] ; u = at3(rx0,ry0,rz1);
    q = g3[ b10 + bz1 ] ; v = at3(rx1,ry0,rz1);
    a = lerp(t, u, v);

    q = g3[ b01 + bz1 ] ; u = at3(rx0,ry1,rz1);
    q = g3[ b11 + bz1 ] ; v = at3(rx1,ry1,rz1);
    b = lerp(t, u, v);

    d = lerp(sy, a, b);

    return lerp(sz, c, d);
}
Example #10
0
	float PerlinNoise:: noise3( float x, float y, float z) {
		float vec[3] = { x, y, z };
		int bx0, bx1, by0, by1, bz0, bz1, b00, b10, b01, b11;
		float rx0, rx1, ry0, ry1, rz0, rz1, sy, sz, a, b, c, d, t, u, v;
		const float* q;
		register int i, j;

		setup(0, bx0,bx1, rx0,rx1);
		setup(1, by0,by1, ry0,ry1);
		setup(2, bz0,bz1, rz0,rz1);

		i = p[ bx0 ];
		j = p[ bx1 ];

		b00 = p[ i + by0 ];
		b10 = p[ j + by0 ];
		b01 = p[ i + by1 ];
		b11 = p[ j + by1 ];

		t  = s_curve(rx0);
		sy = s_curve(ry0);
		sz = s_curve(rz0);

#define at3(rx,ry,rz) (rx * q[0] + ry * q[1] + rz * q[2])

		q = g3[ b00 + bz0 ] ; u = at3(rx0,ry0,rz0);
		q = g3[ b10 + bz0 ] ; v = at3(rx1,ry0,rz0);
		a = lerp(t, u, v);

		q = g3[ b01 + bz0 ] ; u = at3(rx0,ry1,rz0);
		q = g3[ b11 + bz0 ] ; v = at3(rx1,ry1,rz0);
		b = lerp(t, u, v);

		c = lerp(sy, a, b);

		q = g3[ b00 + bz1 ] ; u = at3(rx0,ry0,rz1);
		q = g3[ b10 + bz1 ] ; v = at3(rx1,ry0,rz1);
		a = lerp(t, u, v);

		q = g3[ b01 + bz1 ] ; u = at3(rx0,ry1,rz1);
		q = g3[ b11 + bz1 ] ; v = at3(rx1,ry1,rz1);
		b = lerp(t, u, v);

		d = lerp(sy, a, b);

		return lerp(sz, c, d);
	}
Example #11
0
                T
        noise3 (
                T		 vec[3])
        {
                int		 bx0, bx1, by0, by1, bz0, bz1, b00, b10, b01, b11;
                T		 rx0, rx1, ry0, ry1, rz0, rz1, sy, sz, a, b, c, d, t, u, v;
                int		 i, j;

                setup(vec[0], bx0,bx1, rx0,rx1);
                setup(vec[1], by0,by1, ry0,ry1);
                setup(vec[2], bz0,bz1, rz0,rz1);

                i = p[ bx0 ];
                j = p[ bx1 ];

                b00 = p[ i + by0 ];
                b10 = p[ j + by0 ];
                b01 = p[ i + by1 ];
                b11 = p[ j + by1 ];

                t  = s_curve(rx0);
                sy = s_curve(ry0);
                sz = s_curve(rz0);

                u = at3(rx0,ry0,rz0,b00 + bz0);
                v = at3(rx1,ry0,rz0,b10 + bz0);
                a = lerp(t, u, v);

                u = at3(rx0,ry1,rz0,b01 + bz0);
                v = at3(rx1,ry1,rz0,b11 + bz0);
                b = lerp(t, u, v);

                c = lerp(sy, a, b);

                u = at3(rx0,ry0,rz1,b00 + bz1);
                v = at3(rx1,ry0,rz1,b10 + bz1);
                a = lerp(t, u, v);

                u = at3(rx0,ry1,rz1,b01 + bz1);
                v = at3(rx1,ry1,rz1,b11 + bz1);
                b = lerp(t, u, v);

                d = lerp(sy, a, b);

                return lerp(sz, c, d);
        }
Example #12
0
real shPerlin::noise3(real vec[3])const{
	int bx0, bx1, by0, by1, bz0, bz1, b00, b10, b01, b11;
	real rx0, rx1, ry0, ry1, rz0, rz1, sy, sz, a, b, c, d, t, u, v;
	const real *q;
	int i, j;

	setup(0, bx0,bx1, rx0,rx1);
	setup(1, by0,by1, ry0,ry1);
	setup(2, bz0,bz1, rz0,rz1);

	i = p[ bx0 ];
	j = p[ bx1 ];

	b00 = p[ i + by0 ];
	b10 = p[ j + by0 ];
	b01 = p[ i + by1 ];
	b11 = p[ j + by1 ];

	t  = s_curve(rx0);
	sy = s_curve(ry0);
	sz = s_curve(rz0);

	#define at3(rx,ry,rz) (rx * q[0] + ry * q[1] + rz * q[2])

	q = g3[ b00 + bz0 ] ; u = at3(rx0,ry0,rz0);
	q = g3[ b10 + bz0 ] ; v = at3(rx1,ry0,rz0);
	a = lerp(t, u, v);

	q = g3[ b01 + bz0 ] ; u = at3(rx0,ry1,rz0);
	q = g3[ b11 + bz0 ] ; v = at3(rx1,ry1,rz0);
	b = lerp(t, u, v);

	c = lerp(sy, a, b);

	q = g3[ b00 + bz1 ] ; u = at3(rx0,ry0,rz1);
	q = g3[ b10 + bz1 ] ; v = at3(rx1,ry0,rz1);
	a = lerp(t, u, v);

	q = g3[ b01 + bz1 ] ; u = at3(rx0,ry1,rz1);
	q = g3[ b11 + bz1 ] ; v = at3(rx1,ry1,rz1);
	b = lerp(t, u, v);

	d = lerp(sy, a, b);

	return lerp(sz, c, d);
}
Example #13
0
 I noisetest::noise3(I vec[3])
 {
   int bx0, bx1, by0, by1, bz0, bz1, b00, b10, b01, b11;
   I rx0, rx1, ry0, ry1, rz0, rz1, *q, sy, sz, a, b, c, d, t, u, v;
   int i, j;
   
   setup(0, bx0,bx1, rx0,rx1);
   setup(1, by0,by1, ry0,ry1);
   setup(2, bz0,bz1, rz0,rz1);
   
   i = p[ bx0 ];
   j = p[ bx1 ];
   
   b00 = p[ i + by0 ];
   b10 = p[ j + by0 ];
   b01 = p[ i + by1 ];
   b11 = p[ j + by1 ];
   
   t  = s_curve(rx0);
   sy = s_curve(ry0);
   sz = s_curve(rz0);
   
   q = g3[ b00 + bz0 ] ; u = at3(rx0,ry0,rz0);
   q = g3[ b10 + bz0 ] ; v = at3(rx1,ry0,rz0);
   a = lerp(t, u, v);
   
   q = g3[ b01 + bz0 ] ; u = at3(rx0,ry1,rz0);
   q = g3[ b11 + bz0 ] ; v = at3(rx1,ry1,rz0);
   b = lerp(t, u, v);
   
   c = lerp(sy, a, b);
   
   q = g3[ b00 + bz1 ] ; u = at3(rx0,ry0,rz1);
   q = g3[ b10 + bz1 ] ; v = at3(rx1,ry0,rz1);
   a = lerp(t, u, v);
   
   q = g3[ b01 + bz1 ] ; u = at3(rx0,ry1,rz1);
   q = g3[ b11 + bz1 ] ; v = at3(rx1,ry1,rz1);
   b = lerp(t, u, v);
   
   d = lerp(sy, a, b);
   
   return lerp(sz, c, d);
 }
Example #14
0
double PerlinGenerator::noise3(double vec[3])
{
  int bx0, bx1, by0, by1, bz0, bz1, b00, b10, b01, b11;
  double rx0, rx1, ry0, ry1, rz0, rz1, *q, sy, sz, a, b, c, d, t, u, v;
  int i, j;

  setup(0, t,vec, bx0,bx1, rx0,rx1);
  setup(1, t,vec, by0,by1, ry0,ry1);
  setup(2, t,vec, bz0,bz1, rz0,rz1);

  i = p[ bx0 ];
  j = p[ bx1 ];

  b00 = p[ i + by0 ];
  b10 = p[ j + by0 ];
  b01 = p[ i + by1 ];
  b11 = p[ j + by1 ];

  t  = s_curve(rx0);
  sy = s_curve(ry0);
  sz = s_curve(rz0);

  q = g3[ b00 + bz0 ] ; u = at3(rx0,ry0,rz0);
  q = g3[ b10 + bz0 ] ; v = at3(rx1,ry0,rz0);
  a = perlin_lerp(t, u, v);

  q = g3[ b01 + bz0 ] ; u = at3(rx0,ry1,rz0);
  q = g3[ b11 + bz0 ] ; v = at3(rx1,ry1,rz0);
  b = perlin_lerp(t, u, v);

  c = perlin_lerp(sy, a, b);

  q = g3[ b00 + bz1 ] ; u = at3(rx0,ry0,rz1);
  q = g3[ b10 + bz1 ] ; v = at3(rx1,ry0,rz1);
  a = perlin_lerp(t, u, v);

  q = g3[ b01 + bz1 ] ; u = at3(rx0,ry1,rz1);
  q = g3[ b11 + bz1 ] ; v = at3(rx1,ry1,rz1);
  b = perlin_lerp(t, u, v);

  d = perlin_lerp(sy, a, b);

  return perlin_lerp(sz, c, d);
}
Example #15
0
float noise3(const float x, const float y, const float z){
	int bx0, bx1, by0, by1, bz0, bz1, b00, b10, b01, b11;
	float rx0, rx1, ry0, ry1, rz0, rz1, *q, sy, sz, a, b, c, d, t, u, v;
	int i, j;

	setup(x, bx0,bx1, rx0,rx1);
	setup(y, by0,by1, ry0,ry1);
	setup(z, bz0,bz1, rz0,rz1);

	i = p[bx0];
	j = p[bx1];

	b00 = p[i + by0];
	b10 = p[j + by0];
	b01 = p[i + by1];
	b11 = p[j + by1];

	t  = s_curve(rx0);
	sy = s_curve(ry0);
	sz = s_curve(rz0);

	q = g3[b00 + bz0]; u = at3(rx0,ry0,rz0);
	q = g3[b10 + bz0]; v = at3(rx1,ry0,rz0);
	a = lerp(t, u, v);

	q = g3[b01 + bz0]; u = at3(rx0,ry1,rz0);
	q = g3[b11 + bz0]; v = at3(rx1,ry1,rz0);
	b = lerp(t, u, v);

	c = lerp(sy, a, b);

	q = g3[b00 + bz1]; u = at3(rx0,ry0,rz1);
	q = g3[b10 + bz1]; v = at3(rx1,ry0,rz1);
	a = lerp(t, u, v);

	q = g3[b01 + bz1]; u = at3(rx0,ry1,rz1);
	q = g3[b11 + bz1]; v = at3(rx1,ry1,rz1);
	b = lerp(t, u, v);

	d = lerp(sy, a, b);

	return lerp(sz, c, d);
}
Example #16
0
extern "C" int main(int argc, char *argv[]) {
	LoadAtrac();

	sceAtracReinit(0, 3);

	Atrac3File at3("../sample.at3");
	at3.Require();

	int atracID = sceAtracSetDataAndGetID(at3.Data(), at3.Size());

	checkpointNext("Atrac IDs:");
	testGetInfo("  Normal", atracID);
	testGetInfo("  Invalid ID", -1);
	testGetInfo("  Unused ID", 1);

	checkpointNext("Other states:");
	int withoutDataID = sceAtracGetAtracID(0x1000);
	testGetInfo("  No data", withoutDataID);
	sceAtracReleaseAtracID(withoutDataID);
	forceAtracState(atracID, 8);
	testGetInfo("  State 8", atracID);
	forceAtracState(atracID, 16);
	testGetInfo("  State 16", atracID);
	forceAtracState(atracID, 1);
	sceAtracReleaseAtracID(atracID);

	checkpointNext("Stream types:");
	int halfwayID = sceAtracSetHalfwayBufferAndGetID(at3.Data(), at3.Size() / 2, at3.Size());
	testGetInfo("  Halfway", atracID);
	sceAtracReleaseAtracID(halfwayID);
	testGetInfo("  No loop", at3);
	testGetInfoWithLooped("  End loop", at3, 2048, 249548);
	testGetInfoWithLooped("  Middle loop", at3, 2048, 200000);
	testGetInfoWithLooped("  Late loop", at3, 200000, 249548);

	checkpointNext("Loop end cutoff:");
	testGetInfoWithLooped("  200335", at3, 2048, 200335);
	testGetInfoWithLooped("  200336", at3, 2048, 200336);

	testGetInfoTwice(at3);

	UnloadAtrac();
	return 0;
}
int main(int argc, char **argv)
{

  std::string str;
  int ret;
  ArTcpConnection con;
  ArRobot robot;

  ActionTest at1(-50, 333);
  ActionTest at2(25, 666);
  ActionTest at3(25, 0);
  ActionTest at4(0, -999);

  Aria::init();
  
  if ((ret = con.open()) != 0)
  {
    str = con.getOpenMessage(ret);
    printf("Open failed: %s\n", str.c_str());
    Aria::shutdown();
    return 1;
  }

  robot.setDeviceConnection(&con);
  if (!robot.blockingConnect())
  {
    printf("Could not connect to robot... exiting\n");
    Aria::shutdown();
    return 1;
  }

  robot.addAction(&at1, 100);
  robot.addAction(&at2, 100);
  robot.addAction(&at3, 100);
  robot.addAction(&at4, 100);

  robot.run(true);
  Aria::shutdown();
  return 0;



}
Example #18
0
int main()
{
  std::mt19937 gen;
  gen.seed(std::chrono::system_clock::now().time_since_epoch().count());

  //Settings
  MotifGenSettings set1(1.5, &gen, 3);

  //Create some global abstract motifs
  std::vector<AbstractMotif> am;
  am.push_back(AbstractMotif(set1));
  am.push_back(AbstractMotif(set1));
  am.push_back(AbstractMotif(set1));
  set1.length = 1;
  am.push_back(AbstractMotif(set1));
  am.push_back(AbstractMotif(set1));
  am.push_back(AbstractMotif(set1));

  //Abstract themes
  ThemeGenSettings set2(3, am, .25, &gen, 3);
  AbstractTheme at1(set2);
  set2.concreteness = .5;
  AbstractTheme at2(set2);
  set2.concreteness = .75;
  AbstractTheme at3(set2);
  set2.concreteness = 1;
  AbstractTheme at4(set2);
  AbstractTheme at5(set2);

  //Concrete themes
  ThemeConcreteSettings set3("C4", 0, 80, midi::Instrument::ACOUSTIC_GRAND_PIANO,
                             1500, &gen, 3);

  midi::NoteTrack nt;
  std::uint32_t ticks = 0;

  ConcreteTheme ct(at1, set3);
  ct.addToTrack(nt, ticks);
  ticks += ct.ticks() + 5000;

  ct.generate(at1, set3);
  ct.addToTrack(nt, ticks);
  ticks += ct.ticks() + 5000;

  ct.generate(at1, set3);
  ct.addToTrack(nt, ticks);
  ticks += ct.ticks() + 5000;

  ct.generate(at4, set3);
  ct.addToTrack(nt, ticks);
  ticks += ct.ticks() + 5000;

  ct.generate(at4, set3);
  ct.addToTrack(nt, ticks);
  ticks += ct.ticks() + 5000;

  ct.generate(at4, set3);
  ct.addToTrack(nt, ticks);
  ticks += ct.ticks() + 5000;

  ct.generate(at4, set3);
  ct.addToTrack(nt, ticks);
  ticks += ct.ticks() + 5000;

  //1 1 2 2 3 3 1 1 4 4 5 5 1 1
  //1
  /*
  ConcreteTheme ct(at1, set3);
  ct.addToTrack(nt, ticks);
  ticks += ct.ticks() + 5000;

  //1
  ct.generate(at1, set3);
  ct.addToTrack(nt, ticks);
  ticks += ct.ticks() + 5000;

  //2
  ct.generate(at2, set3);
  ct.addToTrack(nt, ticks);
  ticks += ct.ticks() + 5000;

  //2
  ct.generate(at2, set3);
  ct.addToTrack(nt, ticks);
  ticks += ct.ticks() + 5000;

  //3
  ct.generate(at3, set3);
  ct.addToTrack(nt, ticks);
  ticks += ct.ticks() + 5000;

  //3
  ct.generate(at3, set3);
  ct.addToTrack(nt, ticks);
  ticks += ct.ticks() + 5000;

  //1
  ct.generate(at1, set3);
  ct.addToTrack(nt, ticks);
  ticks += ct.ticks() + 5000;

  //1
  ct.generate(at1, set3);
  ct.addToTrack(nt, ticks);
  ticks += ct.ticks() + 5000;

  //4
  ct.generate(at4, set3);
  ct.addToTrack(nt, ticks);
  ticks += ct.ticks() + 5000;

  //4
  ct.generate(at4, set3);
  ct.addToTrack(nt, ticks);
  ticks += ct.ticks() + 5000;

  //5
  ct.generate(at5, set3);
  ct.addToTrack(nt, ticks);
  ticks += ct.ticks() + 5000;

  //5
  ct.generate(at5, set3);
  ct.addToTrack(nt, ticks);
  ticks += ct.ticks() + 5000;

  //1
  ct.generate(at1, set3);
  ct.addToTrack(nt, ticks);
  ticks += ct.ticks() + 5000;

  //1
  ct.generate(at1, set3);
  ct.addToTrack(nt, ticks);
  ticks += ct.ticks() + 5000;*/

  //Save
  midi::MIDI_Type0 mid(nt, midi::TimeDivision(1548));
  mid.write("testtheme.mid");
}