如何画出圆形

nxf1125 2006-12-06 02:52:47
一个物体在显示器上运动,如何让它走出圆形??
输入条件:已知当前点(x,y),圆心位置(x,y),.
不能用到正余弦函数.
所剩分数不多了,多谢..
...全文
242 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
nxf1125 2007-02-14
  • 打赏
  • 举报
回复
类似.打错了.
nxf1125 2007-02-14
  • 打赏
  • 举报
回复
自己找到了,用八分法,同楼上的原理.
HUNTON 2006-12-07
  • 打赏
  • 举报
回复
//bresenham画圆算法
void circle(int centerx, int centery, int radius, int color, int type)
{
int x = 0;
int y = radius;
int delta = 2*(1-radius);
int direction;

while (y >= 0) {
if (!type) {
setPixel(centerx+x, centery+y, color);
setPixel(centerx-x, centery+y, color);
setPixel(centerx-x, centery-y, color);
setPixel(centerx+x, centery-y, color);
}
else {
line_b(centerx+x, centery+y, centerx+x, centery-y, color, 1);
line_b(centerx-x, centery+y, centerx-x, centery-y, color, 1);
}

if (delta < 0) {
if ((2*(delta+y)-1) < 0) {
direction = 1;
}
else {
direction = 2;
}
}
else if(delta > 0) {
if ((2*(delta-x)-1) <= 0) {
direction = 2;
}
else {
direction = 3;
}
}
else {
direction=2;
}

switch(direction) {
case 1:
x++;
delta += (2*x+1);
break;
case 2:
x++;
y--;
delta += 2*(x-y+1);
break;
case 3:
y--;
delta += (-2*y+1);
break;
}
}
}
shunan 2006-12-06
  • 打赏
  • 举报
回复
不能直接用圆形公式,因为搂住有前提就是不能用三角函数!
可以用图形学中的中点画圆算法,只用到了加法和乘法!效率非常高
nxf1125 2006-12-06
  • 打赏
  • 举报
回复
a为圆心在x上的坐标??
nxf1125 2006-12-06
  • 打赏
  • 举报
回复
能不能说得清楚一些????没有明白..麻纺你了..
beatkin 2006-12-06
  • 打赏
  • 举报
回复
同意ls
lzyblog 2006-12-06
  • 打赏
  • 举报
回复
使用圆形的公式呀,遍历x就行了--x取值为[a-r,a+r],a为圆心在x上的坐标,r为半径

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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