为了账号安全,请及时绑定邮箱和手机立即绑定

角度计算有问题

计算角度这个没有讲 真的有好大问题

正在回答

3 回答

/**
     * 获取角度
     * @param a
     * @param b
     * @return 角度
     */
    public float getDegress(Point a,Point b){
        float ax=a.x;
        float ay=a.y;
        float bx=b.x;
        float by=b.y;
        float degress=0;
        if(bx==ax){
            if(by>ay){
                degress=90;
            }else if(by<ay){
                degress=270;
            }
        }else if(by==ay){
            if(bx>ax){
                degress=0;
            }else if(bx<ax){
                degress=180;
            }
        }else if(bx>ax){//-90~90
            if(by>ay){ //-90~0
                degress=WithPoint(Math.abs(ax-bx),Math.abs(ay-by));
            }else if(by<ay){//0~90
                degress=-WithPoint(Math.abs(ax-bx),Math.abs(ay-by));
            }
        }else if(bx<ax){//90~270
            if(by>ay){//180~270
                degress=-WithPoint(Math.abs(ax-bx),Math.abs(ay-by))+180;
            }else if(by<ay){//90~180
                degress=WithPoint(Math.abs(ax-bx),Math.abs(ay-by))+180;
            }
        }
        return degress;
    }
    //求角度
    public float WithPoint(float x,float y){
        float dushu=Math.round(Math.atan(y/x)/Math.PI*180);
        return dushu;
    }

0 回复 有任何疑惑可以回复我~
#1

qq_箭在弦上_0 提问者

非常感谢!
2015-08-07 回复 有任何疑惑可以回复我~

/**
* 获取角度
* @param a
* @param b
* @return 角度
* */

public float getDegrees(Point a,Point b){
   float aX = a.x;
   float aY = a.y;
   float bX = b.x;
   float bY = b.y;
   float tan;
   float degrees = 0;
   if (aX == bX){ //90度或270度
       if(bY > aY){ //在y轴下边
           degrees = 90;
       } else if(bY < aY){
           degrees = 270;
       }
   }else if(aY == bY){ // 0 度或180度
       if (aX>bX){
           degrees = 180;
       }else if(aX<bX){
           degrees = 0 ;
       }
   }else {
           tan=(b.y-a.y)/(b.x-a.x);
       degrees= (float) ((float)Math.atan(tan)/Math.PI*180);
       if (a.y<b.y&&a.x>b.x){
          degrees=180+degrees;   //270°-360°
       }

       if (a.x>b.x&&a.y > b.y) { //180°-270°
           degrees=180+degrees;  
       }

   }
   return degrees;
}

0 回复 有任何疑惑可以回复我~

要把这个角度计算的源码贴出来就好了


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Android图案解锁
  • 参与学习       34862    人
  • 解答问题       52    个

本视频教程将带领大家通过自定义控件实现一个图案解锁的功能

进入课程

角度计算有问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信