美文网首页高级UI
Android的三角函数以及求圆上的任意一点

Android的三角函数以及求圆上的任意一点

作者: 山上的神仙 | 来源:发表于2019-04-17 10:44 被阅读49次

    本篇为了加深自定义View的理解,来一篇数学基础的,也回顾下初中知识 ps:以前感觉高中数学好并没什么卵用,现在好像有点用处了,还有手势滑动的速度来处理相应业务需求(下篇再更)。


    20160311132542311.png

    话不多说,先上公式
    数学中是这样求坐标点的
    圆心坐标:(x0,y0)
    半径:r
    角度:a
    圆周率: PI
    则圆上任一点为:(x1,y1)
    x1 = x0 + r * cos(a * PI /180 )
    y1 = y0 + r * sin(a * PI /180 )
    再看java代码

        private void drawNomal(Canvas canvas) {
            paint = new Paint();//初始化画笔
            //绘制画布背景
            canvas.drawColor(Color.GRAY);
            //设置画笔颜色
            paint.setColor(Color.parseColor("#f00000"));
            //设置画笔为空心  如果将这里改为Style.STROKE 将这个图中的实线圆柱体就变成空心的
            paint.setStyle(Paint.Style.FILL);
            canvas.save();
            //画圆
            canvas.drawCircle(width / 2, height / 2, 200, paint);
    
            paint.setColor(Color.parseColor("#ffffff"));
    
            for (int i = 0; i < 12; i++) {
                //中心坐标
               //x = width / 2 ;//我这里是以屏幕中心为坐标点 所以宽高直接除以2
               // y = height / 2;//我这里是以屏幕中心为坐标点 所以宽高直接除以2
               //30 代表角度,200代表半径 这些都是可以自定义的
               //公式 java中有快捷求cos sin得方法。就是这样了
    
                int x = (int) Math.round(Math.sin(Math.toRadians(30 * i)) * 200);
    
                int y = (int) Math.round(Math.cos(Math.toRadians(30 * i)) * 200);
    
                canvas.drawLine(width / 2, height / 2, width / 2 + x, height / 2 - y, paint);
    
                canvas.drawCircle(width/2+x,height/2-y,10,paint);
            }
        }
    

    只要传入我们view里面得画布就可以实现以下效果


    TIM截图20190417105159.png

    看到这里你会说这有什么diao用?
    但是我们可以衍生出来的圆形菜单就是这样做的鸭!!

    相关文章

      网友评论

        本文标题:Android的三角函数以及求圆上的任意一点

        本文链接:https://www.haomeiwen.com/subject/tmsgwqtx.html