最好有代码,我觉得好像应该不难,可是我得数学不好!!
我想实现类似CD播放器的那个可调节音量大小的旋转按钮,大家帮忙啦,帮帮小D啦!!!!!
http://www.csdn.net/expert/topic/899/899696.xml?temp=.9010279 这里还有200分,快点来领把!!!

解决方案 »

  1.   

    取鼠标点,(x1, y1)
    和圆心点(x0, y0)dx = x1 - x0;
    dy = y1 - y0;angle = Math.atan(dy/dx);
    angle = angle*180/Math.PI;
    angle = angle % 360;
    if (angle < 0) { angle += 360; }
    if (dy < 0 && dx < 0) { angle += 180; }
    if (dy > 0 && dx < 0) { angle -=  180; }
      

  2.   

    atan是算dx/dy所对应的孤长,但应该是 atan(dy,dx) 吧
    用它比上周长再 *2PI*r 就是弧度了
    其余的代码应该是处理非第一象限的情况
    很久没碰到过数学问题了:)
    #include <math.h>
    double atan2( double y, double x );
      

  3.   

    用上面大侠算出的是弧度。
    angle = Math.atan(dy/dx);
    可算出角度。
      

  4.   

    kenryHuang用得没错,但用atan2更方便,atan的值域是–π/2 ~π/2 ,atan2的值域是–π ~π 。

    angle = Math.atan2(dy,dx);
    angle = angle*180/Math.PI;
    if (angle < 0)  angle += 360; 
      

  5.   

    To ytweiwei:
    对不起,我没有仔细看。给你说错了。
    请用:
    #include <math.h>
    double atan2( double y, double x );
    其中y,x分别是圆中某点的纵坐标和横坐标
    它返回的范围是–π to π 
    当然,这里的坐标是以圆心为(0,0)算的,所以实际运用时还得“坐标变换”一下