This commit is contained in:
sloop
2016-05-28 22:26:19 +08:00
parent 4b3e52e908
commit 7771afd343

View File

@@ -243,19 +243,19 @@ close方法用于连接当前最后一个点和最初的一个点(如果两个
Direction的意思是 方向,趋势。 点进去看一下会发现Direction是一个枚举(Enum)类型,里面只有两个枚举常量,如下: Direction的意思是 方向,趋势。 点进去看一下会发现Direction是一个枚举(Enum)类型,里面只有两个枚举常量,如下:
类型 | 解释 | 翻译 类型 | 解释 | 翻译
--- | --- | --- -----|-------------------|-------
CW | clockwise | 顺时针 CW | clockwise | 顺时针
CCW | counter-clockwise | 逆时针 CCW | counter-clockwise | 逆时针
> **瞬间懵逼,我只是想添加一个基本的形状啊,搞什么顺时针和逆时针, (╯‵□′)╯︵┻━┻** > **瞬间懵逼,我只是想添加一个基本的形状啊,搞什么顺时针和逆时针, (╯‵□′)╯︵┻━┻**
**稍安勿躁,┬─┬ ( ' - ') {摆好摆好) 既然存在肯定是有用的,先偷偷剧透一下这个顺时针和逆时针的作用。** **稍安勿躁,┬─┬ ( ' - ') {摆好摆好) 既然存在肯定是有用的,先偷偷剧透一下这个顺时针和逆时针的作用。**
序号 | 作用 序号 | 作用
--- | --- -----|---------------------------------------------------
1 | 在添加图形时确定闭合顺序(各个点的记录顺序) 1 | 在添加图形时确定闭合顺序(各个点的记录顺序)
2 | 对图形的渲染结果有影响(是判断图形渲染的重要条件) 2 | 对图形的渲染结果有影响(是判断图形渲染的重要条件)
这个先剧透这么多,至于对闭合顺序有啥影响,自相交图形的渲染等问题等请慢慢看下去 这个先剧透这么多,至于对闭合顺序有啥影响,自相交图形的渲染等问题等请慢慢看下去
@@ -281,7 +281,6 @@ CCW | counter-clockwise | 逆时针
``` ```
canvas.translate(mWidth / 2, mHeight / 2); // 移动坐标系到屏幕中心 canvas.translate(mWidth / 2, mHeight / 2); // 移动坐标系到屏幕中心
canvas.scale(1,-1); // <-- 注意 scale特殊运用翻转y坐标轴
Path path = new Path(); Path path = new Path();
@@ -292,12 +291,7 @@ CCW | counter-clockwise | 逆时针
canvas.drawPath(path,mPaint); canvas.drawPath(path,mPaint);
``` ```
<img src="http://ww3.sinaimg.cn/large/005Xtdi2jw1f1g5ec62kuj30u01hc3zv.jpg" width = "270" height = "480"/> <img src="http://ww3.sinaimg.cn/large/005Xtdi2jw1f4bg7ly3n7j30u01hc78a.jpg" width = "270" height = "480"/>
**请注意:为了演示方便,本次将坐标系调整到了和我们常见的数学坐标系相同,请留意代码的变动,否则效果刚好是反着的,会更加难以理解。**
> 如果你对坐标系有疑问,请参考之前文章 [坐标系](https://github.com/GcsSloop/AndroidNote/blob/master/%E9%97%AE%E9%A2%98/%E5%9D%90%E6%A0%87%E7%B3%BB/%E5%9D%90%E6%A0%87%E7%B3%BB.md) <br/>
>如果你对翻转坐标轴有疑问,请参考之前文章 [Canvas(2)画布操作](https://github.com/GcsSloop/AndroidNote/blob/master/%E9%97%AE%E9%A2%98/Canvas/Canvas(2).md)
可以明显看到,图形发生了奇怪的变化。为何会如此呢? 可以明显看到,图形发生了奇怪的变化。为何会如此呢?
@@ -317,7 +311,6 @@ CCW | counter-clockwise | 逆时针
``` java ``` java
canvas.translate(mWidth / 2, mHeight / 2); // 移动坐标系到屏幕中心 canvas.translate(mWidth / 2, mHeight / 2); // 移动坐标系到屏幕中心
canvas.scale(1,-1); // <-- 注意 翻转y坐标轴
Path path = new Path(); Path path = new Path();
@@ -328,13 +321,11 @@ CCW | counter-clockwise | 逆时针
canvas.drawPath(path,mPaint); canvas.drawPath(path,mPaint);
``` ```
<img src="http://ww4.sinaimg.cn/large/005Xtdi2jw1f1gamc02c6j30u01hcabi.jpg" width = "270" height = "480"/> <img src="http://ww2.sinaimg.cn/large/005Xtdi2jw1f4bgkdk8efj30u01hctcu.jpg" width = "270" height = "480"/>
通过验证发现,发现结果和我们猜想的一样,但是还有一个潜藏的问题不晓得大家可否注意到。**为啥A点总是排在第一个呢长得漂亮还是咋地** 通过验证发现,发现结果和我们猜想的一样,但是还有一个潜藏的问题不晓得大家可否注意到。**我们用两个点的坐标确定了一个矩形,矩形起始点(A)就是我们指定的第一个点的坐标。**
我们前面说过,确定一个矩形只需要知道对角线的两个点就足够了,我们实际上是通过 C(-200,-200) 和 A(200,200) 来确定这个矩形的A点就是我们参数中的第二个点经过测试可以发现参数中指定的第二个点始终是记录中的第一个点。至于为啥参数中第二个点作为记录的第一个点可能就是当时设计这个的工程师一拍脑门决定的也可能是这样设计算法比较简单。这个我们无需深究。 **需要注意的是,交换坐标点的顺序可能就会影响到某些绘制内容哦,例如上面的例子,你可以尝试交换两个坐标点,或者指定另外两个点来作为参数,虽然指定的是同一个矩形,但实际绘制出来是不同的哦。**
**不过,需要注意的是,交换坐标点的顺序可能就会影响到某些绘制内容哦,例如上面的例子,你可以尝试交换两个坐标点,或者指定另外两个点来作为参数,虽然指定的是同一个矩形,但实际绘制出来是不同的哦。**
**参数中点的顺序很重要!<br/>参数中点的顺序很重要!<br/>参数中点的顺序很重要!<br/>** **参数中点的顺序很重要!<br/>参数中点的顺序很重要!<br/>参数中点的顺序很重要!<br/>**