Rozmiar pierwotny(1024 × 1024 pikseli, rozmiar pliku: 40 KB, typ MIME: image/jpeg)

Ten plik znajduje się w Wikimedia Commons i może być używany w innych projektach. Poniżej znajdują się informacje ze strony opisu tego pliku.

Opis

Opis
English: Worley noise: example of worley noise with euclidean distance function
Data
Źródło Praca własna
Autor Rocchini

Licencja

Ja, właściciel praw autorskich do tego dzieła, udostępniam je na poniższej licencji
w:pl:Licencje Creative Commons
uznanie autorstwa na tych samych warunkach
Wolno:
  • dzielić się – kopiować, rozpowszechniać, odtwarzać i wykonywać utwór
  • modyfikować – tworzyć utwory zależne
Na następujących warunkach:
  • uznanie autorstwa – musisz określić autorstwo utworu, podać link do licencji, a także wskazać czy utwór został zmieniony. Możesz to zrobić w każdy rozsądny sposób, o ile nie będzie to sugerować, że licencjodawca popiera Ciebie lub Twoje użycie utworu.
  • na tych samych warunkach – Jeśli zmienia się lub przekształca niniejszy utwór, lub tworzy inny na jego podstawie, można rozpowszechniać powstały w ten sposób nowy utwór tylko na podstawie tej samej lub podobnej licencji.

Source Code

Very very raw C source code:

#include <stdio.h>
#include <math.h>

void worley_noise() {
	const int S = 1024;		// image Size
	const int N  = 128;		// Number of points
	const int K  = 2;		// color value sKale
	static int x[N],y[N];		// points positions
	int i,j,k;

	for(i=0;i<N;++i){ x[i] = rand()%S; y[i] = rand()%S; }

	FILE * fo = fopen("c:\\temp\\worley.pnm","wb");
	fprintf(fo,"P5\n#Created by Shqn\n%d %d\n255\n",S,S);

	for(j=0;j<S;++j) for(i=0;i<S;++i){		// for each pixel...
		int mind = S;
		for(k=0;k<N;++k) {					// compute min distance
			int dx = i-x[k];
			int dy = j-y[k];
			int d = (int)sqrt((double)(dx*dx+dy*dy));
			if(mind>d) mind = d;
		}
		
		mind *= K;							// scale and clip
		unsigned char b = mind<255 ? mind : 255;
		fwrite(&b,1,1,fo);
	}
	fclose(fo);
}


New code : c program

// Worley noise: example of worley noise with euclidean distance function by Rocchini

#include <stdio.h>
#include <stdlib.h> // rand
#include <time.h>
#include <math.h>

int main() {
	const int S = 1024;		// image Size
	const int N  = 128;		// Number of points
	const int K  = 2;		// color value sKale
	int x[N],y[N];		// points positions
	int i,j,k;
	
	
	srand(time(NULL));   // Initialization, should only be called once.
	for(i=0;i<N;++i){ x[i] = rand()%S; y[i] = rand()%S; }

	FILE * fo = fopen("worley.pnm","wb");
	fprintf(fo,"P5\n %d %d\n255\n",S,S);

	for(j=0;j<S;++j) 
		for(i=0;i<S;++i){		// for each pixel...
			int mind = S;
			for(k=0;k<N;++k) {					// compute min distance
				int dx = i-x[k];
				int dy = j-y[k];
				int d = (int)sqrt((double)(dx*dx+dy*dy));
				if(mind>d) mind = d;
			}
		
		mind *= K;							// scale and clip
		unsigned char b = mind<255 ? mind : 255;
		fwrite(&b,1,1,fo);
	}
	fclose(fo);
	
	return 0;
}

Using libvips library:

 vips vipsworley w.png  1000 1000

Podpisy

Dodaj jednolinijkowe objaśnienie tego, co ten plik pokazuje

Obiekty przedstawione na tym zdjęciu

przedstawia

image/jpeg

Historia pliku

Kliknij na datę/czas, aby zobaczyć, jak plik wyglądał w tym czasie.

Data i czasMiniaturaWymiaryUżytkownikOpis
aktualny08:51, 5 kwi 2012Miniatura wersji z 08:51, 5 kwi 20121024 × 1024 (40 KB)Rocchini

Następujące strony korzystają z tego pliku:

Globalne wykorzystanie pliku

Ten plik jest wykorzystywany także w innych projektach wiki: