לדלג לתוכן

קובץ:Zernike polynomials2.png

תוכן הדף אינו נתמך בשפות אחרות.
מתוך ויקיפדיה, האנציקלופדיה החופשית

לקובץ המקורי(1,568 × 1,568 פיקסלים, גודל הקובץ: 478 ק"ב, סוג MIME‏: image/png)

ויקישיתוף זהו קובץ שמקורו במיזם ויקישיתוף. תיאורו בדף תיאור הקובץ המקורי (בעברית) מוצג למטה.

תקציר

תיאור
English: The Zernike_polynomials values
תאריך יצירה
מקור נוצר על־ידי מעלה היצירה (כיתוב מקורי:
self-made
)
יוצר Rocchini (Zom-B at en.wikipedia)
גרסאות אחרות

[עריכה]

Source Code

The dirty C++ code:

#include <stdio.h>
#include <stdlib.h>

static double fact( int n ) {  // The factorial function!
	double f = 1;
	while(n>1)
		f *= n--;
	return f;
}

static inline unsigned char f2b( double f ) {  // float to byte
	if(f<0) f = 0; if(f>1) f = 1;
	int i = f*256; if(i>255) i = 255;
	return i;
}

void HSV2RGB(double h, double s, double v, unsigned char rgb[3] ) {  // the classic hue scale
	if (s == 0) {
		rgb[0] = rgb[1] = rgb[2] = f2b(v);
	} else {
		double v_h = h * 6;
		double v_i = floor(v_h);
		double v_1 = v * (1 - s);
		double v_2 = v * (1 - s * (v_h - v_i));
		double v_3 = v * (1 - s * (1 - (v_h - v_i)));
		double v_r,v_g,v_b;
		     if (v_i == 0) {v_r = v;   v_g = v_3; v_b = v_1;}
		else if (v_i == 1) {v_r = v_2; v_g = v;   v_b = v_1;}
		else if (v_i == 2) {v_r = v_1; v_g = v;   v_b = v_3;}
		else if (v_i == 3) {v_r = v_1; v_g = v_2; v_b = v  ;}
		else if (v_i == 4) {v_r = v_3; v_g = v_1; v_b = v  ;}
		else               {v_r = v;   v_g = v_1; v_b = v_2;};
		
		rgb[0] = f2b(v_r);
		rgb[1] = f2b(v_g);
		rgb[2] = f2b(v_b);
	}
}

double zernike_polynomials( int m, int n, double ro, double th ) {  // the polynomial hitself
	double Rmnro = 0;
	bool even = m>=0;
	if(m<0) m = -m;
	if( (n-m)%2 ) return 0;

	for(int k=0;k<=(n-m)/2;++k) {
		Rmnro += pow(ro,n-2*k)*
			     ( pow(-1,k) * fact(n-k) ) /
			     ( fact(        k) *
			       fact((n+m)/2-k) * 
			       fact((n-m)/2-k)
			     );
	}

	if(even) return Rmnro * cos(m*th);
	else     return Rmnro * sin(m*th);
}

void main() {
	const double NO_VALUE = 42; const int B  = 64;
	const int SX = 1024;
	const int SY = 1024;
	
	const int LX = 3; const int LY = 7;
	int pairs[21][2] =
	{
		{ 0,0},
		{-1,1},{ 1,1},
		{-2,2},{ 0,2},{ 2,2},
		{-3,3},{-1,3},{ 1,3},{ 3,3},
		{-4,4},{-2,4},{ 0,4},{ 2,4},{ 4,4},
		{-5,5},{-3,5},{-1,5},{ 1,5},{ 3,5},{ 5,5},
	};

	unsigned char * img = new unsigned char[LX*SX*LY*SY*3];

	int ix,iy,q = 0;
	for(iy=0;iy<LY;++iy) for(ix=0;ix<LX;++ix) {
		int m = pairs[q][0];
		int n = pairs[q][1];
		for(int j=0;j<SY;++j) {
			double y = double(SY/2-j)/(SY/2-B);
			for(int i=0;i<SX;++i) {
			   double x = double(SX/2-i)/(SX/2-B);
			   double ro = sqrt(x*x+y*y);
			   double th = atan2(y,x);	
			   double z = NO_VALUE;
			   if(ro<=1)
					z = zernike_polynomials(m,n,ro,th);
			   unsigned char * rgb = img+3*( i+SX*(ix+LX*(j+SY*iy)) );
				if(z == NO_VALUE )
					rgb[0] = rgb[1] = rgb[2] = 255;
				else {
					if(z>=0) z =  pow( z,0.8);	// little enance
					else     z = -pow(-z,0.8);
					z = (z+1)/2;			// normalize
					if(z<0) z = 0;
					if(z>1) z = 1;
					
					HSV2RGB( 2.0*z/3.0, 0.8, 0.9, rgb );
				}
			}
		}
		printf("%03d%%\n",q*100/(LX*LY)); ++q;
	}

	FILE * fp = fopen("c:\\temp\\zernike.ppm","wb");
	fprintf(fp,"P6\n%d %d\n255\n",SX*LX,SY*LY);
	fwrite(img,1,LX*SX*LY*SY*3,fp);
	fclose(fp);
	delete[] img;
}

רישיון

זוהי תמונה מרוטשת, זאת אומרת שהתמונה שונתה בצורה דיגיטלית מהמקור. Modifications: Made into pyramid shape. את התמונה המקורית ניתן לראות ב: Zernike polynomials.png.

Zom-B at en.wikipedia, בעל זכויות היוצרים על היצירה הזאת, מפרסם אותה בזאת תחת הרישיון הבא:
w:he:Creative Commons
ייחוס
הקובץ הזה מתפרסם לפי תנאי רישיון קריאייטיב קומונז ייחוס 3.0 לא מותאם.
ייחוס: Zom-B at en.wikipedia
הנכם רשאים:
  • לשתף – להעתיק, להפיץ ולהעביר את העבודה
  • לערבב בין עבודות – להתאים את העבודה
תחת התנאים הבאים:
  • ייחוס – יש לתת ייחוס הולם, לתת קישור לרישיון, ולציין אם נעשו שינויים. אפשר לעשות את זה בכל צורה סבירה, אבל לא בשום צורה שמשתמע ממנה שמעניק הרישיון תומך בך או בשימוש שלך.

יומן העלאה מקורי

תיאור הקובץ המקורי נמצא כאן. כל שמות המשתמשים הבאים מתייחסים ל-en.wikipedia.
  • 2009-09-30 22:19 Zom-B 1568×1568× (489636 bytes) == Dettagli == {{Information |Description=Image of the Zernike_polynomials values |Source=self-made |Date=2008-05-07 |Author= [[User:Rocchini|Rocchini]] |Permission=CC-BY 3.0 }} {{RetouchedPicture|Made into pyramid shape|editor=|orig=Zernike_polynomials.

כיתובים

נא להוסיף משפט שמסביר מה הקובץ מייצג

פריטים שמוצגים בקובץ הזה

מוצג

היסטוריית הקובץ

ניתן ללחוץ על תאריך/שעה כדי לראות את הקובץ כפי שנראה באותו זמן.

תאריך/שעהתמונה ממוזערתממדיםמשתמשהערה
נוכחית23:42, 23 ביולי 2011תמונה ממוזערת לגרסה מ־23:42, 23 ביולי 2011‪1,568 × 1,568‬ (478 ק"ב)Akkakk{{Information |Description={{en|Image of the Zernike_polynomials values}} |Source=Transferred from [http://en.wikipedia.org en.wikipedia]<br/> (Original text : ''self-made'') |Date={{Date|2008|05|07}}<br/> ({{Date|2009|09|30}} (original upload date)) |Aut

אין בוויקיפדיה דפים המשתמשים בקובץ זה.

שימוש גלובלי בקובץ

אתרי הוויקי השונים הבאים משתמשים בקובץ זה: