个性化阅读
专注于IT技术分析

使用极坐标定义一个圆

定义圆的第二种方法利用极坐标, 如图所示:

x = r cosθy = r sinθ其中θ=当前角度r =圆半径x = x坐标y = y坐标

通过这种方法, θ从0步进到

使用极坐标定义圆

&计算x和y的每个值。

使用极坐标定义圆

算法

步骤1:设置初始变量:

r =圆半径(h, k)=圆心坐标i =步长θ_end=θ= 0

步骤2:如果θ>θ, 则停止。

第三步:计算

x = r * cosθy = r * sin?θ

步骤4:在当前(x, y)坐标上绘制对称找到的八个点, 即中心(h, k)。

图(x + h, y + k)图(-x + h, -y + k)图(y + h, x + k)图(-y + h, -x + k)图(-y + h , x + k)图(y + h, -x + k)图(-x + h, y + k)图(x + h, -y + k)

步骤5:递增θ=θ+ i

步骤6:转到步骤(ii)。

程序使用极坐标画一个圆:

#include <graphics.h>
#include <stdlib.h>
#define color 10
void eightWaySymmetricPlot(int xc, int yc, int x, int y)
{
	putpixel(x+xc, y+yc, color);
	putpixel(x+xc, -y+yc, color);
	putpixel(-x+xc, -y+yc, color);
	putpixel(-x+xc, y+yc, color);
	putpixel(y+xc, x+yc, color);
	putpixel(y+xc, -x+yc, color);
	putpixel(-y+xc, -x+yc, color);
	putpixel(-y+xc, x+yc, color);
}
void PolarCircle(int xc, int yc, int r)
{
	int x, y, d;
	x=0;
	y=r;
	d=3-2*r;
	eightWaySymmetricPlot(xc, yc, x, y);
	while(x<=y)
	{
		if(d<=0)
		{
			d=d+4*x+6;
		}
		else
		{
			d=d+4*x-4*y+10;
			y=y-1;
		}
		x=x+1;
		eightWaySymmetricPlot(xc, yc, x, y);
	}
}
int main(void)
{
	int gdriver = DETECT, gmode, errorcode;
	int xc, yc, r;
	initgraph(&gdriver, &gmode, "c:\\turboc3\\bgi");
errorcode = graphresult();
if (errorcode != grOk)  
	{
		printf("Graphics error: %s\n", grapherrormsg(errorcode));
		printf("Press any key to halt:");
		getch();
		exit(1);             
	}
printf("Enter the values of xc and yc , that is center points of circle : ");
	scanf("%d%d", &xc, &yc);
	printf("Enter the radius of circle : ");
	scanf("%d", &r);
	PolarCircle(xc, yc, r);
	getch();
	closegraph();
	return 0;
}

输出:

使用极坐标定义圆

赞(0)
未经允许不得转载:srcmini » 使用极坐标定义一个圆

评论 抢沙发

评论前必须登录!