跳至內容

File:Hyperbolic coordinates.svg

頁面內容不支援其他語言。
這個檔案來自維基共享資源
維基百科,自由的百科全書

原始檔案 (SVG 檔案,表面大小:800 × 800 像素,檔案大小:20 KB)


摘要

描述 Hyperbolic coordinates grip on I cartesian quadrant
日期
來源 自己的作品
作者 Rocchini
授權許可
(重用此檔案)
CC-BY 3.0

Source Code

In C++

void hyperbolic_coordinates() {
	const double DIMX = 800; const double DIMY = 800;
	const double B    = 64;  const double S    = 128;
	const double miu  = -2;  const double mau  = 2;
	const double miv  = 0;   const double mav  = 8;
	const int N = 24;        const int M = 1024;

	FILE * fp = fopen("c:\\temp\\hyperbolic_coordinates.svg","w");

	fprintf(fp,
		"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n"
		"<svg\n"
		"xmlns:svg=\"http://www.w3.org/2000/svg\"\n"
		"xmlns=\"http://www.w3.org/2000/svg\"\n"
		"version=\"1.0\"\n"
		"width=\"%g\"\n"
		"height=\"%g\"\n"
		"id=\"rocco\">\n"
		,DIMX,DIMY
	);
	fprintf(fp,"<g id=\"edge_layer1\" style=\"fill:none;stroke:#800000;stroke-width:1.5;stroke-opacity:1\">\n" );

	int i,j;
	for(j=0;j<N;++j) {
		const double v = miv + (mav-miv)*double(j)/(N-1);
		fprintf(fp, "<path d=\"" );
		bool first = true;
		for(i=0;i<M;++i) {
			const double u = miu + (mau-miu)*double(i)/(M-1);
			double x = v*exp( u); double y = v*exp(-u);
			x =       x*S+B;      y = DIMY-(y*S+B);
			if(x>=B && x<=DIMX-B && y>=B && y<=DIMY-B ) {
				if(first) fprintf(fp,"M ");
				else      fprintf(fp,"L ");
				fprintf(fp,"%g %g ",x,y);
				first = false;
			}
		}
		fprintf(fp,"\"/>\n");
	}

	fprintf(fp,
		"</g>\n"
		"<g id=\"edge_layer2\" style=\"fill:none;stroke:#000080;stroke-width:1.5;stroke-opacity:1\">\n"
	);

	for(i=0;i<N ;++i) {
		const double u = miu + (mau-miu)*double(i)/(N-1);
		fprintf(fp, "<path d=\"");
		bool first = true;
		for(j=0;j<M;++j)	{
			const double v = miv + (mav-miv)*double(j)/(M-1);
			double x = v*exp( u); double y = v*exp(-u);
			x =       x*S+B;      y = DIMY-(y*S+B);
			if(x>=B && x<=DIMX-B && y>=B && y<=DIMY-B ) {
				if(first) fprintf(fp,"M ");
				else      fprintf(fp,"L ");
				fprintf(fp,"%g %g ",x,y);
				first = false;
			}
		}
		fprintf(fp,"\"/>\n");
	}

	fprintf(fp,
		"</g>\n"
		"</svg>\n"
	);

	fclose(fp);
}

授權條款

我,本作品的著作權持有者,決定用以下授權條款發佈本作品:
GNU head 已授權您依據自由軟體基金會發行的無固定段落、封面文字和封底文字GNU自由文件授權條款1.2版或任意後續版本,對本檔進行複製、傳播和/或修改。該協議的副本列在GNU自由文件授權條款中。
w:zh:共享創意
姓名標示
此檔案採用創用CC 姓名標示 3.0 未在地化版本授權條款。
您可以自由:
  • 分享 – 複製、發佈和傳播本作品
  • 重新修改 – 創作演繹作品
惟需遵照下列條件:
  • 姓名標示 – 您必須指名出正確的製作者,和提供授權條款的連結,以及表示是否有對內容上做出變更。您可以用任何合理的方式來行動,但不得以任何方式表明授權條款是對您許可或是由您所使用。
您可以選擇您需要的授權條款。

說明

添加單行說明來描述出檔案所代表的內容

在此檔案描寫的項目

描繪內容

沒有維基數據項目的某些值

維基媒體使用者名稱 繁體中文 (已轉換拼寫):​Rocchini
作者姓名字串 繁體中文 (已轉換拼寫):​Rocchini

著作權狀態 繁體中文 (已轉換拼寫)

有著作權 繁體中文 (已轉換拼寫)

檔案來源 Chinese (Taiwan) (已轉換拼寫)

上傳者的原創作品 繁體中文 (已轉換拼寫)

檔案歷史

點選日期/時間以檢視該時間的檔案版本。

日期/時間縮⁠圖尺寸用戶備⁠註
目前2008年5月13日 (二) 08:14於 2008年5月13日 (二) 08:14 版本的縮圖800 × 800(20 KB)Rocchini{{Information |Description= Hyperbolic coordinates grip on I cartesian quadrant |Source=self-made |Date=2008-05-13 |Author= Rocchini |Permission=CC-BY 3.0 }}

下列頁面有用到此檔案:

全域檔案使用狀況

以下其他 wiki 使用了這個檔案: