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 已授权您依据自由软件基金会发行的无固定段落及封面封底文字(Invariant Sections, Front-Cover Texts, and Back-Cover Texts)的GNU自由文件许可协议1.2版或任意后续版本的条款,复制、传播和/或修改本文件。该协议的副本请见“GNU Free Documentation License”。
w:zh:知识共享
署名
本文件采用知识共享署名 3.0 未本地化版本许可协议授权。
您可以自由地:
  • 共享 – 复制、发行并传播本作品
  • 修改 – 改编作品
惟须遵守下列条件:
  • 署名 – 您必须对作品进行署名,提供授权条款的链接,并说明是否对原始内容进行了更改。您可以用任何合理的方式来署名,但不得以任何方式表明许可人认可您或您的使用。
您可以选择您需要的许可协议。

说明

添加一行文字以描述该文件所表现的内容

此文件中描述的项目

描繪內容

文件历史

点击某个日期/时间查看对应时刻的文件。

日期/时间缩⁠略⁠图大小用户备注
当前2008年5月13日 (二) 08:142008年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使用此文件: