en.wikipedia からコモンズに Maksim によって移動されました。
元のファイルページは
こちら。以下の利用者は全てen.wikipediaに属します。
Coloured 2D Voronoi diagram, made by me.
|
この文書は、フリーソフトウェア財団発行のGNUフリー文書利用許諾書 (GNU Free Documentation License) 1.2またはそれ以降のバージョンの規約に基づき、複製や再配布、改変が許可されます。不可変更部分、表紙、背表紙はありません。このライセンスの複製は、GNUフリー文書利用許諾書という章に含まれています。http://www.gnu.org/copyleft/fdl.htmlGFDLGNU Free Documentation Licensetruetrue
|
|
このファイルはクリエイティブ・コモンズ 表示-継承 3.0 非移植ライセンスのもとに利用を許諾されています。
|
|
|
- あなたは以下の条件に従う場合に限り、自由に
- 共有 – 本作品を複製、頒布、展示、実演できます。
- 再構成 – 二次的著作物を作成できます。
- あなたの従うべき条件は以下の通りです。
- 表示 – あなたは適切なクレジットを表示し、ライセンスへのリンクを提供し、変更があったらその旨を示さなければなりません。これらは合理的であればどのような方法で行っても構いませんが、許諾者があなたやあなたの利用行為を支持していると示唆するような方法は除きます。
- 継承 – もしあなたがこの作品をリミックスしたり、改変したり、加工した場合には、あなたはあなたの貢献部分を元の作品とこれと同一または互換性があるライセンスの下に頒布しなければなりません。
|
このライセンスのテンプレートは、GFDLのライセンス・アップデートによりこのファイルに追加されたものです。http://creativecommons.org/licenses/by-sa/3.0/CC BY-SA 3.0Creative Commons Attribution-Share Alike 3.0truetrue
|
|
このファイルの ベクター画像 (SVG) が利用できます。 使う目的に対し、元画像よりもSVGがより優れている場合、SVG画像を使用して下さい。
|
|
|
この作品は自由ソフトウェアです。あなたは、フリーソフトウェア財団の発行する GNU 一般公衆利用許諾書 (GNU General Public License) (バージョン2、またはそれ以降のライセンス) の規約に基づき、このライブラリの再配布や改変ができます。この作品は、有用であることを期待して配布されていますが、商用あるいは特定の目的に適するかどうかも含めて、暗黙的にも、一切保証されません。詳しくは、バージョン2およびバージョン3のGNU 一般公衆利用許諾書をご覧ください。http://www.gnu.org/licenses/gpl.htmlGPLGNU General Public Licensetruetrue
|
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <time.h>
#define PI 3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825
#define PI2 (PI*2)
#define SQ2 1.414213562373095048801688724209698078569671875376948073176679737990732478462
#define FI 1.618033988749894848204586834365638117720309179805762862135448622705260462818902449707207204
#define SX 666
#define SY 666
#define NPT 100
#define RSD 666
#define V3D 0
/*
#define SX 666
#define SY 666
#define NPT 1000
#define RSD 1923879
#define V3D 1
*/
#define BPL ((SX*3+3)&~3)
void seedr(unsigned int);
unsigned int rnd();
unsigned int rndm(unsigned int);
unsigned char bhdr[54]={
0x42, 0x4D, 0x36, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x28, 0x00,
0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x01, 0x00, 0x18, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x12, 0x0B, 0x00, 0x00, 0x12, 0x0B, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
unsigned char po[BPL];
double gr[SY][SX][3];
void drawit();
int main(int a, char **b) {
FILE *o;
int x, y, c;
double t;
unsigned char *p;
srand(time(0));
drawit();
p=bhdr+2; *p++=x=54+BPL*SY; *p++=x>>=8; *p++=x>>=8; *p=x>>=8;
p=bhdr+18; *p++=x=SX; *p++=x>>=8; *p++=x>>=8; *p++=x>>=8;
*p++=x=SY; *p++=x>>=8; *p++=x>>=8; *p=x>>=8;
if(!(o=fopen("voronoi.bmp", "wb"))) {
fclose(o);
printf("Couldn't open output file.\n");
return(0);
}
fwrite(bhdr, 54, 1, o);
for(x=SX*3;x<BPL;++x) po[x]=0;
for(y=SY-1;~y;--y) {
for(x=0,p=po;x<SX;++x) for(c=2;~c;--c) *p++=(t=gr[y][x][c])<=0?0:(t>=1?255:t*255);
fwrite(po, BPL, 1, o);
}
fclose(o);
return(0);
}
int ptx[NPT], pty[NPT], ptz[NPT];
double ptc[NPT][3];
void drawit() {
int x, y, c, n, bn, dx, dy, dz;
unsigned int m, p;
seedr(RSD);
for(n=0;n<NPT;++n) {
ptx[n]=rndm(SX); pty[n]=rndm(SX); ptz[n]=(!!V3D)*(rndm(SX)-SX/2);
for(c=0;c<3;++c) ptc[n][c]=rnd()/(double)~0u;
}
for(y=0;y<SY;++y) for(x=0;x<SY;++x) {
for(n=0,m=~0;n<NPT;++n) {
dx=x-ptx[n]; dy=y-pty[n]; dz=-ptz[n]; p=dx*dx+dy*dy+dz*dz;
if(p<m) { m=p; bn=n; }
}
for(c=0;c<3;++c) gr[y][x][c]=ptc[bn][c];
}
if(!V3D)
for(n=0;n<NPT;++n)
for(y=-1+!pty[n];y<=1-(pty[n]==SY-1);++y)
for(x=-1+!ptx[n];x<=1-(ptx[n]==SX-1);++x)
for(c=0;c<3;++c)
gr[pty[n]+y][ptx[n]+x][c]=0;
}
unsigned int rseeda[624];
int rseedu;
void seedr(unsigned int s) {
int n;
rseedu=624; rseeda[0]=s; for(n=1;n<624;++n) rseeda[n]=s*=69069u;
}
#define TEMPBLAH(x,y,z) { v=(rseeda[x]&0x80000000)|(rseeda[y]&0x7fffffff);\
rseeda[x]=rseeda[z]^(v>>1)^(0x9908b0df&(0-(v&1)));}
void gennewr() {
int n;
unsigned int v;
for(n=0;n<227;++n) TEMPBLAH(n, n+1, n+397);
for(;n<623;++n) TEMPBLAH(n, n+1, n-227);
TEMPBLAH(623, 0, 396);
rseedu=0;
}
#undef TEMPBLAH
unsigned int rnd() {
if(rseedu>=624) gennewr();
unsigned int v=rseeda[rseedu++];
v^=v>>11;
v^=(v<<7)&0x9d2c5680;
v^=(v<<15)&0xefc60000;
v^=v>>18;
return(v);
}
unsigned int rndm(unsigned int m) {
unsigned int v, c=(0u-m)/m;
while((v=rnd())/m>c);
return(v%m);
}
ja:画像:Coloured Voronoi 2D.png
date/time |
username |
edit summary
|
18:11, 7 September 2005 |
en:User:Ja seed |
(+ja)
|
12:04, 25 January 2005 |
en:User:Voinic |
(char *p -> unsigned char *p;)
|
20:18, 14 October 2004 |
en:User:Cyp |
(+Image generator source code, made by me)
|
20:16, 14 October 2004 |
en:User:Cyp |
(Coloured 2D Voronoi diagram, made by me. {{GFDL}})
|
元のアップロードログ
Legend: (cur) = this is the current file, (del) = delete this old version, (rev) = revert to this old version.
Click on date to download the file or see the image uploaded on that date.
- (del) (cur) 20:16, 14 October 2004 . . en:User:Cyp Cyp ( en:User_talk:Cyp Talk) . . 333x333 (23852 bytes) (Coloured 2D Voronoi diagram, made by me. { { GFDL } })