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); }
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); }
// 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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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; }
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"); }