美文网首页自定义ViewAndroid架构
自定义 view - 数学公式

自定义 view - 数学公式

作者: 前行的乌龟 | 来源:发表于2018-11-04 00:44 被阅读26次

从来没有感觉到我是如此对不起党,对不起祖国的培养,对不起老师的辛辛教导,直到我再次碰到了 sin 、cos 、tan 时!如果老天再给我一次机会的话,我想说我要好好学数学

这是个噩梦,明明已经过去了的,但是为啥又再次遇到呢,还不是搞自定义 view 时算参数,啊啊啊啊,我想死啊,但是没办法啊,这些公式不会你就算不出参数来,没办法,再学一次吧,就当是重温高考了~


自定义 view 中涉及到以下几个公式:

  • Math.sin - 正弦公式
  • Math.cos - 余弦公式
  • Math.acos() - 反余弦函数;
  • Math.atan2
  • Math.toDegrees() - 弧度转角度
  • Math.toRadians - 角度转弧度

这几个数学公式在使用 path 绘制时必然会碰到的,比如计算 path 莫个点的切角角度,x,y 坐标。虽说我们可能很久没有接触过了,但是也不难的,搞懂就行了

1. 什么是 sin ,con

以这个三角形为例


按照概念解释:

  • sin 正弦,锐角对应的边与斜边的边
  • cos 余弦,锐角相邻的那条直角边与斜边的比
  • tan 正切,直角三角函数中,锐角对应的边跟另一条直角边的比

文字看不懂的话,看标准实例图也知道是啥意思了。sin ,con 的值在 -1 到 1 之间,Math 中的 sin 和 cos 也是如此,比如 API:

  • Math.sin(x)
  • Math.cos(x)

但是要注意啊,Math 中的 x 可不是角度,而是弧度,转换公式如下:

  • 弧度 = 角度 * Math.PI / 180
  • 角度 = 弧度 x 180 / Math.PI

2. 什么是弧度

至于不知道弧度的同学,看图:


005Xtdi2jw1f1s0g3rcg2j308c0dw3yw.jpg

当这段弧长正好等于圆的半径时,两条射线的夹角大小为1弧度。所以 A-B 的弧线长度 / 半径 = 弧度了。详细可以查看:


公式用途

  1. sin 和 cos 的计算一般也就是知道一个边,角度算另一个边,比如:
a = Math.sin(x) * c
b = Math.con(x) * c 
  1. Math.acos 传入的参数是 邻边 / 斜边 的比值,获取是的弧度,用来计算角度的

  2. Math.atan2 是用来算 path 中某个点的切线角度的,场景是图片跟着 path 的方向转动指定角度

atan2 需要传2个参数:
Math.atan2(tan[1], tan[0])

其中tan[0]是邻边边长,也就是 point 点的 x 坐标;tan[1]是对边边长,也就是 point 点的 y 坐标
tan 的值可以用 PathMeasure.getPosTan 方法获取

写法如下:
private float[] pos = new float[2];   
private float[] tan = new float[2];
measure.getPosTan(length, pos, tan);  
float degrees = (float) (Math.atan2(tan[1], tan[0]) * 180.0 / Math.PI);

基本上面的就差不多了,再有请留言,我加上

参考文章:


相关文章

  • 自定义 view - 数学公式

    从来没有感觉到我是如此对不起党,对不起祖国的培养,对不起老师的辛辛教导,直到我再次碰到了 sin 、cos 、ta...

  • Android View(转)

    自定义View的原理自定义View基础 - 最易懂的自定义View原理系列自定义View Measure过程 - ...

  • 自定义View系列

    自定义View1---知识储备自定义View2---View Measure过程自定义View3---View L...

  • 自定义View5---完整的自定义View

    移步自定义View系列 1.自定义view的分类自定义单一view(不含子view)继承view继承特定view如...

  • 自定义View

    自定义View系列文章 自定义View view向上滚动

  • 自定义View(一) 自定义View的概述

    不怕跌倒,所以飞翔 自定义View概述 1.自定义View分类 自定义View 直接继承View主要是绘制 自定义...

  • Android自定义View

    Android自定义View 参考:从此再有不愁自定义View——Android自定义view详解android ...

  • 自定义view

    Android自定义View 为什么要自定义View自定义View的基本方法 自定义View的最基本的三个方法分别...

  • Android 之 自定义View全解

    本文主要有以下内容: 自定义View的分类 自定义View的注意事项 自定义View的不同实现 自定义View使其...

  • 高级Android工程师进阶系列文章汇总

    自定义View HenCoder(朱凯)自定义View系列 自定义view总结 Android 样式的开发 And...

网友评论

    本文标题:自定义 view - 数学公式

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