English: Antialiased chessboard using the Lanczos algorithm, made by myself based on the source in File:Antialiased.png's description. This one should be relatively close to an ideal filter, primarily because I used a lot of taps (several million) for the more problematic pixels.
این اثر توسط پدیدآور آن، Sesse در ویکیپدیا انگلیسی، به مالکیت عمومی درآمده است. این مربوط به تمام جهان است. در برخی از کشورها ممکن است به صورت قانونی این امکانپذیر نباشد؛ اگر چنین است: Sesse به هر کسی اجازهٔ استفاده از این اثر برای هر مقصودی، بدون هیچگونه شرایطی، را میدهد تا وقتی که این شرایط توسط قانون مستلزم نشده باشند.Public domainPublic domainfalsefalse
Source
Here's the source I used, written by myself. The choice of 16384x16384 might have been overkill; I cannot spot any significant differences between this and using 1024x1024 taps all over the image. The generation took about an hour on one core of an Intel Q9450.
Compile and link with
gcc -O3 -o antialias antialias.c -lm -std=gnu99
#include<stdio.h>#include<stdlib.h>#include<math.h>/* * Do a finer sampling the higher up we get in the picture, * since there's much more detail there. */#define SAMPLES_FROM_Y(y) ((16384 * 512) / (y*y + 512))#define MAX_SAMPLES SAMPLES_FROM_Y(0)floatweights[MAX_SAMPLES][MAX_SAMPLES];staticinlineintcolor(doublex,doubley){doublet,z;inti,j,k;x=x*(1.0/128.0)-0.5;y=y*(1.0/2048.0);t=1.0/(y+0.001);z=t*x;i=floor(t);j=floor(z);k=i+j;return((k%2)!=0);}staticdoublesinc(doublex){staticconstdoublecutoff=1.220703668e-4;/* sqrt(sqrt(eps)) */if(abs(x)<cutoff){/* For small |x|, use Taylor series instead */constdoublex2=x*x;constdoublex4=x2*x2;return1.0-x2/6.0+x4/120.0;}else{returnsin(x)/x;}}staticdoublelanczos_tap(doublex){if(x<-3.0||x>3.0)return0.0;if(x<0.0)returnsinc(-x*M_PI)*sinc(-x*M_PI/3.0);elsereturnsinc(x*M_PI)*sinc(x*M_PI/3.0);}staticvoidprecalculate_weights(unsignednum_samples){doubletotal=0.0;for(intyi=0;yi<num_samples;++yi){doublesy=6.0*((double)yi/num_samples-0.5);doublewy=lanczos_tap(sy);for(intxi=0;xi<num_samples;++xi){doublesx=6.0*((double)xi/num_samples-0.5);weights[yi][xi]=wy*lanczos_tap(sx);total+=weights[yi][xi];}}doubleinv_total=1.0/total;for(intyi=0;yi<num_samples;++yi){for(intxi=0;xi<num_samples;++xi){weights[yi][xi]*=inv_total;}}}staticdoubleantialiased_color(doublex,doubley,unsignednum_samples){doubleacc=0.0;doubledelta=6.0/num_samples;intxi,yi;doublesx,sy;for(yi=0,sy=y-3.0;yi<num_samples;++yi,sy+=delta){for(xi=0,sx=x-3.0;xi<num_samples;++xi,sx+=delta){if(color(sx,sy)){acc+=weights[yi][xi];}}}returnacc;}
سیاهه بارگذاری اصلی
صفحهٔ اصلی توضیحات اینجابود. همهٔ نامهای کاربر زیر به en.wikipedia اشاره دارند.
Reverted to version as of 14:27, 23 December 2008: Revert to original image by Sesse. In original image, gray at top of image is #808080, halfway between black and white as would be expected; in Dicklyon’s modified version, gray at top is much lighter t
Antialiased chessboard using the Lanczos algorithm, made by myself based on the source in [[File:Antialiased.png]]'s description. This one should be relatively close to an ideal filter, primarily because I used a lot of taps (several million) for the more
{{BotMoveToCommons|en.wikipedia|year={{subst:CURRENTYEAR}}|month={{subst:CURRENTMONTHNAME}}|day={{subst:CURRENTDAY}}}} {{Information |Description={{en|Antialiased chessboard using the Lanczos algorithm, made by myself based on the source in File:Antialia