2016-03-10 23:57:49 +08:00
|
|
|
|
# 角度与弧度
|
|
|
|
|
|
|
2016-03-23 21:42:45 +08:00
|
|
|
|
### 作者微博: [@GcsSloop](http://weibo.com/GcsSloop)
|
2016-08-17 02:54:17 +08:00
|
|
|
|
### [【本系列相关文章】](http://www.gcssloop.com/1970/01/CustomViewIndex/)
|
2016-03-23 21:42:45 +08:00
|
|
|
|
|
2016-03-10 23:57:49 +08:00
|
|
|
|
安卓中角度(angle)与弧度(radian)的有关问题。
|
|
|
|
|
|
|
|
|
|
|
|
## 一.前言
|
|
|
|
|
|
|
|
|
|
|
|
### 1.为什么讲这个?
|
|
|
|
|
|
|
|
|
|
|
|
在我们自定义View,尤其是制作一些复杂炫酷的效果的时候,实际上是将一些简单的东西通过数学上精密的计算组合到一起形成的效果。
|
|
|
|
|
|
|
|
|
|
|
|
这其中可能会涉及到画布的相关操作(旋转),以及一些正余弦函数的计算等,这些内容就会用到一些角度、弧度相关的知识。
|
|
|
|
|
|
|
|
|
|
|
|
### 2.为什么对角的描述存在角度与弧度两种单位?
|
|
|
|
|
|
|
|
|
|
|
|
简单来说就是为了方便,为了精确描述一个角的大小引入了角度与弧度的概念。
|
|
|
|
|
|
|
2016-03-11 12:25:26 +08:00
|
|
|
|
由于两者进制是不同的(**角度是60进制,弧度是10进制**),在合适的地方使用合适的单位来描述会更加方便。
|
2016-03-10 23:57:49 +08:00
|
|
|
|
|
|
|
|
|
|
> **例如:**
|
2016-10-18 17:02:46 +08:00
|
|
|
|
> 角度是60进位制,遇到30°6′这样的角,应该转化为10进制的30.1°。但弧度就不需要,因为弧度本身就是十进制的实数。
|
2016-03-10 23:57:49 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 二.角度与弧度的定义
|
|
|
|
|
|
|
|
|
|
|
|
角度和弧度一样都是描述角的一种度量单位,下面是它们的定义:
|
|
|
|
|
|
|
2016-10-18 17:02:46 +08:00
|
|
|
|
| 名称 | 定义 |
|
|
|
|
|
|
| :--: | ---------------------------------------- |
|
|
|
|
|
|
| 角度 | 两条射线从圆心向圆周射出,形成一个夹角和夹角正对的一段弧。**当这段弧长正好等于圆周长的360分之一时,两条射线的夹角的大小为1度.** |
|
|
|
|
|
|
| 弧度 | 两条射线从圆心向圆周射出,形成一个夹角和夹角正对的一段弧。**当这段弧长正好等于圆的半径时,两条射线的夹角大小为1弧度.** |
|
2016-03-10 23:57:49 +08:00
|
|
|
|
|
|
|
|
|
|
**如图:**
|
|
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 三.角度和弧度的换算关系
|
|
|
|
|
|
根据角度和弧度的的定义和圆的相关知识非常容易就能得出两者的换算公式:
|
|
|
|
|
|
|
|
|
|
|
|
先设圆的周长为C. 半径为r
|
|
|
|
|
|
|
|
|
|
|
|
C = 2πr;
|
|
|
|
|
|
|
|
|
|
|
|
一周对应的角度为360度(角度),对应的弧度为2π弧度。
|
|
|
|
|
|
|
2016-10-18 17:02:46 +08:00
|
|
|
|
故的等价关系: **180(度) = π(弧度).**
|
2016-03-10 23:57:49 +08:00
|
|
|
|
|
2016-10-18 17:02:46 +08:00
|
|
|
|
由等价关系可得如下换算公式:
|
2016-03-10 23:57:49 +08:00
|
|
|
|
|
2016-10-18 17:02:46 +08:00
|
|
|
|
> rad 是弧度, deg 是角度
|
|
|
|
|
|
|
|
|
|
|
|
| 公式 | 例子 |
|
|
|
|
|
|
| ----------------------- | ------------------ |
|
|
|
|
|
|
| **rad = deg x π / 180** | 2π = 360 x π / 180 |
|
|
|
|
|
|
| **deg = rad x 180 / π** | 360 = 2π x 180 / π |
|
2016-03-10 23:57:49 +08:00
|
|
|
|
|
2016-07-21 15:05:44 +08:00
|
|
|
|
维基百科的公式:
|
|
|
|
|
|
|
|
|
|
|
|
> rad 是弧度, deg 是角度
|
|
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
|
|
|
2016-03-10 23:57:49 +08:00
|
|
|
|
## 四.一些细节问题
|
2016-08-17 02:54:17 +08:00
|
|
|
|
|
2016-03-11 12:27:03 +08:00
|
|
|
|
由于默认屏幕坐标系和常见数学坐标系的小差别([坐标系问题点这里](https://github.com/GcsSloop/AndroidNote/blob/master/CustomView/Base/%5B1%5DCoordinateSystem.md)),所以在角上必然也会存在一些区别,例如:
|
2016-03-10 23:57:49 +08:00
|
|
|
|
|
|
|
|
|
|
**在常见的数学坐标系中角度增大方向为逆时针,**
|
|
|
|
|
|
|
|
|
|
|
|
**在默认的屏幕坐标系中角度增大方向为顺时针。**
|
|
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
|
|
## About Me
|
2016-08-17 02:54:17 +08:00
|
|
|
|
|
2016-03-11 12:35:19 +08:00
|
|
|
|
### 作者微博: <a href="http://weibo.com/GcsSloop" target="_blank">@GcsSloop</a>
|
|
|
|
|
|
|
2016-08-17 02:54:17 +08:00
|
|
|
|
<a href="http://www.gcssloop.com/1970/01/about/" target="_blank"> <img src="http://ww4.sinaimg.cn/large/005Xtdi2gw1f1qn89ihu3j315o0dwwjc.jpg" width=300/> </a>
|
2016-03-10 23:57:49 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|