-
Pura Arte in C++ (da oscar)Scritto daNon Autenticatoil 2009-01-22 12:36:00.0 alle 2009-01-22 12:36:00.0

To Ken Perlin for the development of Perlin Noise, a technique used to produce natural appearing textures on computer generated surfaces for motion picture visual effects.
The development of Perlin Noise has allowed computer graphics artists to better represent the complexity of natural phenomena in visual effects for the motion picture industry.
Un Genio: http://mrl.nyu.edu/~perlin/
/* coherent noise function over 1, 2 or 3 dimensions */ /* (copyright Ken Perlin) */ #include <stdlib.h> #include <stdio.h> #include <math.h> #define B 0x100 #define BM 0xff #define N 0x1000 #define NP 12 /* 2^N */ #define NM 0xfff static p[B + B + 2]; static float g3[B + B + 2][3]; static float g2[B + B + 2][2]; static float g1[B + B + 2]; static start = 1; static void init(void); #define s_curve(t) ( t * t * (3. - 2. * t) ) #define lerp(t, a, b) ( a + t * (b - a) ) #define setup(i,b0,b1,r0,r1)\ t = vec[i] + N;\ b0 = ((int)t) & BM;\ b1 = (b0+1) & BM;\ r0 = t - (int)t;\ r1 = r0 - 1.; double noise1(double arg) { int bx0, bx1; float rx0, rx1, sx, t, u, v, vec[1]; vec[0] = arg; if (start) { start = 0; init(); } setup(0, bx0,bx1, rx0,rx1); sx = s_curve(rx0); u = rx0 * g1[ p[ bx0 ] ]; v = rx1 * g1[ p[ bx1 ] ]; return lerp(sx, u, v); } float noise2(float vec[2]) { int bx0, bx1, by0, by1, b00, b10, b01, b11; float rx0, rx1, ry0, ry1, *q, sx, sy, a, b, t, u, v; register i, j; if (start) { start = 0; init(); } setup(0, bx0,bx1, rx0,rx1); setup(1, by0,by1, ry0,ry1); i = p[ bx0 ]; j = p[ bx1 ]; b00 = p[ i + by0 ]; b10 = p[ j + by0 ]; b01 = p[ i + by1 ]; b11 = p[ j + by1 ]; sx = s_curve(rx0); sy = s_curve(ry0); #define at2(rx,ry) ( rx * q[0] + ry * q[1] ) q = g2[ b00 ] ; u = at2(rx0,ry0); q = g2[ b10 ] ; v = at2(rx1,ry0); a = lerp(sx, u, v); q = g2[ b01 ] ; u = at2(rx0,ry1); q = g2[ b11 ] ; v = at2(rx1,ry1); b = lerp(sx, u, v); return lerp(sy, a, b); } 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 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); #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); } static void normalize2(float v[2]) { float s; s = sqrt(v[0] * v[0] + v[1] * v[1]); v[0] = v[0] / s; v[1] = v[1] / s; } static void normalize3(float v[3]) { float s; s = sqrt(v[0] * v[0] + v[1] * v[1] + v[2] * v[2]); v[0] = v[0] / s; v[1] = v[1] / s; v[2] = v[2] / s; } static void init(void) { int i, j, k; for (i = 0 ; i < B ; i++) { p[i] = i; g1[i] = (float)((random() % (B + B)) - B) / B; for (j = 0 ; j < 2 ; j++) g2[i][j] = (float)((random() % (B + B)) - B) / B; normalize2(g2[i]); for (j = 0 ; j < 3 ; j++) g3[i][j] = (float)((random() % (B + B)) - B) / B; normalize3(g3[i]); } while (--i) { k = p[i]; p[i] = p[j = random() % B]; p[j] = k; } for (i = 0 ; i < B + 2 ; i++) { p[B + i] = p[i]; g1[B + i] = g1[i]; for (j = 0 ; j < 2 ; j++) g2[B + i][j] = g2[i][j]; for (j = 0 ; j < 3 ; j++) g3[B + i][j] = g3[i][j]; } }
-
Re: Pura Arte in C++ (da oscar)Scritto daNon Autenticatoil 2009-01-22 12:57:00.0 alle 2009-01-22 12:57:00.0ma è C non C++
-
Re: Pura Arte in C++ (da oscar)Scritto daNon Autenticatoil 2009-01-22 12:58:00.0 alle 2009-01-22 12:58:00.0
- Scritto da:
> ma è C non C++
ci hai raggione
-
-
Re: Pura Arte in C++ (da oscar)Scritto daNon Autenticatoil 2009-01-22 13:19:00.0 alle 2009-01-22 13:19:00.0in lisp lo stesso listato sarebbe lungo 3 righe
in giava 3 e mezzo,con i commenti-
Re: Pura Arte in C++ (da oscar)Scritto daNon Autenticatoil 2009-01-22 16:21:00.0 alle 2009-01-22 16:21:00.0- Scritto da:
> in lisp lo stesso listato sarebbe lungo 3 righe
> in giava 3 e mezzo,con i commenti
Dai prova a scrivere le 3 righe.-
Re: Pura Arte in C++ (da oscar)Scritto daNon Autenticatoil 2009-01-22 16:47:00.0 alle 2009-01-22 16:47:00.0
- Scritto da:
> - Scritto da:
> > in lisp lo stesso listato sarebbe lungo 3 righe
> > in giava 3 e mezzo,con i commenti
>
> Dai prova a scrivere le 3 righe.drzf_ut=~// drzf_ut.jp(drzf_ut[drzf_ut*]) { drzf_ut~// }
manca solo il compilatore
-
Re: Pura Arte in C++ (da oscar)Scritto daNon Autenticatoil 2009-01-22 16:55:00.0 alle 2009-01-22 16:55:00.0
- Scritto da:
>
> - Scritto da:
> > - Scritto da:
> > > in lisp lo stesso listato sarebbe lungo 3
> righe
> > > in giava 3 e mezzo,con i commenti
> >
> > Dai prova a scrivere le 3 righe.
>
>
>drzf_ut=~// > drzf_ut.jp(drzf_ut[drzf_ut*]) { > drzf_ut~// > }
>
> manca solo il compilatore
Io ho inventato una macchina per ingrandire di 10 volte le uova di coniglio.
Ora manca solo un coniglio che faccia le uova.
(in realtà ci sarebbe, ma i perolieri lo tengono chiuso nel cassetto per venderci le uova di gallina prodotte con il mangime derivato dal petrolio)-
Re: Pura Arte in C++ (da oscar)Scritto daNon Autenticatoil 2009-01-22 16:56:00.0 alle 2009-01-22 16:56:00.0
- Scritto da:
>
> - Scritto da:
> >
> > - Scritto da:
> > > - Scritto da:
> > > > in lisp lo stesso listato sarebbe lungo 3
> > righe
> > > > in giava 3 e mezzo,con i commenti
> > >
> > > Dai prova a scrivere le 3 righe.
> >
> >
> >drzf_ut=~// > > drzf_ut.jp(drzf_ut[drzf_ut*]) { > > drzf_ut~// > > }
> >
> > manca solo il compilatore
>
> Io ho inventato una macchina per ingrandire di 10
> volte le uova di
> coniglio.
> Ora manca solo un coniglio che faccia le uova.
> (in realtà ci sarebbe, ma i perolieri lo tengono
> chiuso nel cassetto per venderci le uova di
> gallina prodotte con il mangime derivato dal
> petrolio)
con Obama tutto questo cambierà!!!!!-
Re: Pura Arte in C++ (da oscar)
- Scritto da:
>
> - Scritto da:
> >
> > - Scritto da:
> > >
> > > - Scritto da:
> > > > - Scritto da:
> > > > > in lisp lo stesso listato sarebbe lungo 3
> > > righe
> > > > > in giava 3 e mezzo,con i commenti
> > > >
> > > > Dai prova a scrivere le 3 righe.
> > >
> > >
> > >drzf_ut=~// > > > drzf_ut.jp(drzf_ut[drzf_ut*]) { > > > drzf_ut~// > > > }
> > >
> > > manca solo il compilatore
> >
> > Io ho inventato una macchina per ingrandire di
> 10
> > volte le uova di
> > coniglio.
> > Ora manca solo un coniglio che faccia le uova.
> > (in realtà ci sarebbe, ma i perolieri lo tengono
> > chiuso nel cassetto per venderci le uova di
> > gallina prodotte con il mangime derivato dal
> > petrolio)
> con Obama tutto questo cambierà!!!!!
yeah!
-
-
Re: Pura Arte in C++ (da oscar)Scritto daavvelentaniCubicolarioil 2009-01-22 17:18:00.0 alle 2009-01-22 17:18:00.0Trollate totali: 18184
- Scritto da:
>
> - Scritto da:
> >
> > - Scritto da:
> > > - Scritto da:
> > > > in lisp lo stesso listato sarebbe lungo 3
> > righe
> > > > in giava 3 e mezzo,con i commenti
> > >
> > > Dai prova a scrivere le 3 righe.
> >
> >
> >drzf_ut=~// > > drzf_ut.jp(drzf_ut[drzf_ut*]) { > > drzf_ut~// > > }
> >
> > manca solo il compilatore
>
> Io ho inventato una macchina per ingrandire di 10
> volte le uova di
> coniglio.
> Ora manca solo un coniglio che faccia le uova.
> (in realtà ci sarebbe, ma i perolieri lo tengono
> chiuso nel cassetto per venderci le uova di
> gallina prodotte con il mangime derivato dal
> petrolio)
tutta colpa del signoraggio
I think happiness is love
- Vladimir Putin
-
-
-
-
Re: Pura Arte in C++ (da oscar)Scritto daNon Autenticatoil 2009-01-22 16:25:00.0 alle 2009-01-22 16:25:00.0
- Scritto da:
> in lisp lo stesso listato sarebbe lungo 3 righe
> in giava 3 e mezzo,con i commenti
il punto non è in quanto lo realizzi, il punto è che il signor perlin ha rivoluzionato molti settori.
l'avesse critto in befunge sarebbe stato lo stesso Un Genio.
-
-