已知圆心坐标和圆半径,如何得到圆边所有的点的坐标?

布学无数 2005-09-03 01:23:25
也就是说我该如何用点绘制出一个圆?
先谢谢了~```
...全文
428 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
布学无数 2005-09-06
  • 打赏
  • 举报
回复
呵呵,谢谢各位了:)
吹泡泡的小猫 2005-09-03
  • 打赏
  • 举报
回复
对于直线和圆,Bresenham高效而且简单,避免了大量的乘除运算
寻开心 2005-09-03
  • 打赏
  • 举报
回复
同时同意楼上的Bresenham法画圆:
http://www.ekany.com/wdg98/cg/contents/chapter2/les222.htm
寻开心 2005-09-03
  • 打赏
  • 举报
回复
可以用sin和cos只不过不是上面的方法用的

把角度按照折线数目N均分,
循环初始化的时候 x=0, y=2*Pi/N
然后利用 sin(x+y) = sin(x)cos(y)+cos(x)sin(y)
cos(x+y) = cos(x)cos(y)-sin(y)sin(y)
如下方式来写循环
tsinx = sinx = 0
tcosx=cosx = 1
siny = sin(y); cosy = cos(y)
for (int i=0; i<N; i++ )
{
posx = r * cosx
posy = r * sinx;
tsinx = sinx*cosy + cosx*siny;
tcosx = cosx*cosy - sinx*siny;
sinx = tsinx;
cosx = tcosx;
}
farland 2005-09-03
  • 打赏
  • 举报
回复
不要用sin和cos,速度太慢,需要用Bresenham法画,只需加法运算!
ftkghost 2005-09-03
  • 打赏
  • 举报
回复
补充一下 POINT center是圆心
for (i = 0; i < PointNum; i++) //PointNum是点的个数
{
CirclePoint[i].x = center.x+radius * cos(2pi * i / PointNum);
CirclePoint[i].y = center.y+radius * sin(2pi * i / PointNum);
}
i_noname 2005-09-03
  • 打赏
  • 举报
回复
for (i = 0; i < PointNum; i++) //PointNum是点的个数
{
CirclePoint[i].x = radius * cos(2pi * i / PointNum);
CirclePoint[i].y = radius * sin(2pi * i / PointNum);
}

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧