// Oblicz szum na pozycji x, y function perlin(float x, float y) { int x0 = floor(x); int x1 = x0 + 1; int y0 = floor(y); int y1 = y0 + 1;
float sx = x - (float)x0; float sy = y - (float)y0;
float n0, n1, ix0, ix1, value; n0 = dotGridGradient(x0, y0, x, y); n1 = dotGridGradient(x1, y0, x, y); ix0 = lerp(n0, n1, sx); n0 = dotGridGradient(x0, y1, x, y); n1 = dotGridGradient(x1, y1, x, y); ix1 = lerp(n0, n1, sx); value = lerp(ix0, ix1, sy);
return value;
Złożoność algorytmiczna Dla wymiarów, dla których generowany jest szum, złożoność obliczeniowa ewaluuje do . Istnieją alternatywy dla szumu Perlina, które generują podobne wyniki, z tą różnicą, że ich złożoność obliczeniowa jest mniejsza. Zaliczają się do nich m.in. szumy simplex czy OpenSimplex.
Przypisy
Kategoria:Algorytmy graficzne Kategoria:Geometria fraktalna Kategoria:Grafika komputerowa