android高级ui07/08-画鱼-贝塞尔曲线


学习笔记,整理中;

面:

自己思路整理:

1、根据角度和点以及鱼头半径确定各个部位的大小,画出图。

2、用属性动画处理自身的摆动;各个部位评率不同 用sin,cos函数处理。

3、

----------------------------------------------------------------------

摘要:

贝塞尔曲线生产网站:https://cubic-bezier.com/#.17,.67,.83,.67

1、通过起点,线长,角度 获得终点 sign,cos,注意角度和弧度的转换

2、path处理贝塞尔曲线 reseat 注意,并且移动到起点开始画 drawpath

3、path.quadTo 是画贝塞尔曲线;path.lineto是画线  

4、sin(0-360)=-1 1

5、Math.sin(Math.toRadians(currentValue))*10  

---------------------------------------------------------------------------------------------------------------------------------------------------------------------

6、计算坐标:通过起始点+线长+角度 算出目标点的坐标

/**

* @param startPoint 起始点坐标

* @param length    要求的点到起始点的直线距离 -- 线长

* @param angle      鱼当前的朝向角度

* @return

*/

public PointF calculatePoint(PointF startPoint, float length, float angle) {

// x坐标

    float deltaX = (float) (Math.cos(Math.toRadians(angle)) * length);

    // y坐标

    float deltaY = (float) (Math.sin(Math.toRadians(angle -180)) * length);

    return new PointF(startPoint.x + deltaX, startPoint.y + deltaY);

}


---------------------------------------------------------------------------------------------------------------------------------------------------------------------

8、

//向量 通过向量方式,已知3个点的坐标求夹角 O是中间点

public float includeAngle(PointF O, PointF A, PointF B) {

// cosAOB

// OA*OB=(Ax-Ox)(Bx-Ox)+(Ay-Oy)*(By-Oy)

    float AOB = (A.x - O.x) * (B.x - O.x) + (A.y - O.y) * (B.y - O.y);

    //sqrt 开方 根号 (x平方+y平方)开方 得到斜边长度

    float OALength = (float) Math.sqrt((A.x - O.x) * (A.x - O.x) + (A.y - O.y) * (A.y - O.y));

    // OB 的长度

    float OBLength = (float) Math.sqrt((B.x - O.x) * (B.x - O.x) + (B.y - O.y) * (B.y - O.y));

    float cosAOB = AOB / (OALength * OBLength);

    // 反余弦

    float angleAOB = (float) Math.toDegrees(Math.acos(cosAOB));

---------------------------------------------------------------------------------------------------------------------------------------------------------------------

向量的夹角公式计算夹角cosAOB = (OA*OB)/(|OA|*|OB|)其中OA*OB是向量的数量积,计算过程如下:

OA=(Ax-Ox,Ay-Oy)

OB=(Bx-Ox,By-Oy)

OA*OB=(Ax-Ox)(Bx-Ox)+(Ay-Oy)*(By-Oy)

|OA|表示线段OA的模即OA的长度


9、涉及单词:intrinsic  radius  circle

内容:


1


2


3





你可能感兴趣的:(android高级ui07/08-画鱼-贝塞尔曲线)