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