MFC中绘制任意弧度的圆弧

在圆的生成算法中有一种使用极坐标生成圆的算法,实际上我们可以利用极坐标方程绘制在任意位置任意弧度的圆弧。
首先,需要了解圆的极坐标方程组,如下所示
圆的极坐标方程
在了解圆的极坐标方程后,我们要绘制圆弧则需要
1. 指定θ的范围
2. 指定圆弧的起始位置
3. 确定圆弧所在圆的圆心和半径

除了上述这些必备条件之外,我添加了一个参数COLORREF color用来指定所绘制圆弧的颜色。
下面是绘制圆弧的代码

//在任意位置绘制不同弧度的圆弧
//center为圆心,pStart为圆弧起点坐标,radian为圆弧跨越的弧度范围,radius为半径
void DrawArc(CPoint center, CPoint pStart, double radian, int radius,COLORREF color)
{
	double angle, max;
	double dy = (double)pStart.y - (double)center.y, dx = (double)pStart.x - (double)center.x;
	angle = atan2(dy,dx);//求起始点对应的的弧度
	max = angle + radian;
	int x = pStart.x,y = pStart.y;
	SetPixel(x, y, color);
	//PI为定义的宏,其值为3.1415926
	//ROUND(x)也为定义的宏,用来四舍五入,其定义为#define ROUND(a) (int)(a+0.5)
	for (angle+=PI/(double)180; angle < max; angle += PI / (double)180)
	{
		x = center.x + radius * cos(angle);
		y = center.y + radius * sin(angle);
		SetPixel(ROUND(x), ROUND(y), color);
	}
}

注意,利用上述算法来绘制圆弧也有一个缺陷:计算量大

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

斯曦巍峨

码文不易,有条件的可以支持一下

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值