用三角函数的性质简化计算sin(x+dx)=sin(x)cos(dx)+sin(dx)cos(x)
cos(x+dx)=cos(x)cos(dx)-sin(dx)sin(x)dx表示每次增加的角度值,sin(dx)和cos(dx)可以在初始化的时候算好存储,以后不再重复计算
迭代即可高效地算出每个x的cos,sin值//初始化
pre_sin=sin(x0)
pre_cos=cos(x0)
p_sin=sin(dx)
p_cos=cos(dx)//每次计算时
next_sin=pre_sin * p_cos + p_sin * pre_cos
next_cos=pre_cos * p_cos - p_sin * pre_sin
pre_sin=next_sin
pre_cos=next_cos

解决方案 »

  1.   

    所谓连续,也就是要求每秒30次以上的刷新,象播放视频一样,1000毫秒/30 = 33,那么30毫秒执行一次timer就应该能满足你的要求了
      

  2.   

    哈哈,我碰巧也在做一起讨论,一个圆周360度,10ms的定时器,每次1.8度,这样的话角度相对还是较大,如果要角度更小只能提高定时器的精度。那样不仅会加重系统负担。更关键的是,我们无法和软件其他模块协调工作。另外由于直线锯齿的影响,使我们的线条看起来不平滑,我用opengl实现了。效果要比gdi好太多。有兴趣加我qq79063882
      

  3.   

    iceyaobing(sir) 
    刚才加你qq了
    到时候麻烦你和我说下怎么弄
    gdi的确蛮复杂的
      

  4.   

    gdi的程序其实蛮早就实现了
    问题在于gdi做出来不连续
    就如同秒钟在走一样
    效果非常不好
    还看了本图形的书
    什么种子填充法
    然后写了一段
    效果是还可以
    但是系统占用的资源太大太大
    可能是我技艺不精
      

  5.   

    可以做到的,无论是GDI还是GDI+都可以实现
      

  6.   

    说起来简单:最终解决办法
    扫描线又发现新问题。1、那个定时间隔要设置准确。2、扫描线更新频率至少大于显示器刷新频率的2倍(采样定理,意味着你用双缓冲肯定不行了.我用了2ms的定时器)。我在directordraw下做了一个验证ok