求助怎样连续画圆弧。 点击:465 | 回复:2



yuzhenyu

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 10回
  • 年度积分:0
  • 历史总积分:0
  • 注册:1900年1月01日
发表于:2008-08-31 15:06:52
楼主
 圆弧插补常用1/8 圆弧来画圆。  因为步进电机是连续运动的,我不能象PC机中一样采用对称的方法画出整个圆 从 0--45 度与从 45--90 度两段圆弧的变化趋势(X,Y变化的快慢)正好相反,我不能继续用上面的公式画出其它段圆弧 。求助怎样连续画圆弧。



yuzhenyu

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 10回
  • 年度积分:0
  • 历史总积分:0
  • 注册:1900年1月01日
发表于:2008-08-31 15:14:15
1楼
/************************************************/
void hua_yuan(uchar Ox,uchar Oy,uchar Rx)
{
    unsigned int xx,rr,xt,yt,rs;
 yt = Rx;
 rr = Rx * Rx + 1;   //补偿 1 修正方形
 rs =(yt + (yt >> 1)) >>1;  //0.75)分开1/8圆弧来画
 for(xt = 0; xt <= rs; xt++)
 {
     xx = xt * xt;
  while((yt*yt) > (rr-xx))
  {
      yt--;
  }
  col = Ox + xt;  //第一象限
  row = Oy - yt;
  dian(row,col);
  col = Ox - xt;  //第二象限
  dian(row,col);
  row = Oy + yt;  //第三象限
  dian(row,col);
  col = Ox + xt;  //第四象限
  dian(row,col);
  //***************45度镜象画另一半***************
        col = Ox + yt;  //第/一象限
  row = Oy - xt;
  dian(row,col);
  col = Ox - yt;  //第/二象限
  dian(row,col);
  row = Oy + xt;  //第/三象限
  dian(row,col);
  col = Ox + yt;  //第/四象限
  dian(row,col);
 
 }
}

yuzhenyu

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 10回
  • 年度积分:0
  • 历史总积分:0
  • 注册:1900年1月01日
发表于:2008-08-31 15:20:08
2楼
哪位好人帮我下啊!油箱:yuzhenyu_88@163.com.这个问题我在网上找了好多没有我要的结果。

热门招聘
相关主题

官方公众号

智造工程师