关于围绕画中心划圆有关问题,多谢
【求助】关于围绕画中心划圆问题,谢谢。
比如这样一个图

先确定圆有几圈,第一圈有多个圆。
然后画中心圆,然后围绕中心画多个圆。

只需要画出圆就可以了,上图1一圈为6个,第二圈为16个,第三圈,第四圈。。有没有可以参考的算法,谢谢啦
------解决思路----------------------
坐标旋转公式:
x1=cos(angle)*x-sin(angle)*y;
y1=cos(angle)*y+sin(angle)*x;
找到小圆的圆心坐标
小圆画园
旋转小圆圆心angle
------解决思路----------------------
参考:
OnPaint
{
#define RADIUS 40 // 半径
#define DISTANCE 10 // 2园相交部分
#define DEGREE 3.1415926/180
CPaintDC dc(this);
dc.SelectObject(GetStockObject(NULL_BRUSH));
//
CRect rc;
GetClientRect(&rc);
int centerX=rc.Width()/2;
int centerY=rc.Height()/2;
// 1st circle
dc.Ellipse(CRect(centerX-RADIUS,centerY-RADIUS,centerX+RADIUS,centerY+RADIUS));
//
for(int lay=1; lay<3;lay++)
{
for(int jj=0;jj<8*lay;jj++)
{
int angle= 360/8/lay;
int cX=centerX+(int)(lay*(2*RADIUS-DISTANCE)*cos(jj*angle*DEGREE));
int cY=centerY-(int)(lay*(2*RADIUS-DISTANCE)*sin(jj*angle*DEGREE));
dc.Ellipse(CRect(cX-RADIUS,cY-RADIUS,cX+RADIUS,cY+RADUIS));
}
}
}
比如这样一个图
先确定圆有几圈,第一圈有多个圆。
然后画中心圆,然后围绕中心画多个圆。
只需要画出圆就可以了,上图1一圈为6个,第二圈为16个,第三圈,第四圈。。有没有可以参考的算法,谢谢啦
------解决思路----------------------
坐标旋转公式:
x1=cos(angle)*x-sin(angle)*y;
y1=cos(angle)*y+sin(angle)*x;
找到小圆的圆心坐标
小圆画园
旋转小圆圆心angle
------解决思路----------------------
参考:
OnPaint
{
#define RADIUS 40 // 半径
#define DISTANCE 10 // 2园相交部分
#define DEGREE 3.1415926/180
CPaintDC dc(this);
dc.SelectObject(GetStockObject(NULL_BRUSH));
//
CRect rc;
GetClientRect(&rc);
int centerX=rc.Width()/2;
int centerY=rc.Height()/2;
// 1st circle
dc.Ellipse(CRect(centerX-RADIUS,centerY-RADIUS,centerX+RADIUS,centerY+RADIUS));
//
for(int lay=1; lay<3;lay++)
{
for(int jj=0;jj<8*lay;jj++)
{
int angle= 360/8/lay;
int cX=centerX+(int)(lay*(2*RADIUS-DISTANCE)*cos(jj*angle*DEGREE));
int cY=centerY-(int)(lay*(2*RADIUS-DISTANCE)*sin(jj*angle*DEGREE));
dc.Ellipse(CRect(cX-RADIUS,cY-RADIUS,cX+RADIUS,cY+RADUIS));
}
}
}