根据2个坐标计算旋转度数

2019-12-02  本文已影响0人  余炳高笔记

以下是我点思维图,

1.通过计算直角三角形的一个非直角角度,

2.通过三角形点内角和为180度特点

3.然后根据起点(x,y)与终点(x1,y1)的相对位置,加上对应的角度。

草图

判断起点与终点的相对位置进行加上固定的角度。

private int getRotation(double startX, double startY,double endX,double endY) {

double x = Math.abs(startX - endX);

    double y = Math.abs(startY - endY);

    double z = Math.sqrt(x * x + y * y);

    int rotation = Math.round((float) (Math.asin(y / z) / Math.PI *180));

    if (startX > endX && startY < endY) {

// 起点在终点的 左上

        rotation =180 - rotation +5;

    }else if (startX > endX && startY > endY) {

// 起点在终点的 右上

        rotation =180 + rotation -5;

    }else if (startX < endX && startY > endY) {

// 起点在终点的 右下

        rotation =360 - rotation +5;

    }else {

// 起点在终点的 左下

        rotation -=5;

    }

return rotation;

}

代码中旋转点角度因为素材的大小有点误差所以 ±5,实际中根据自己的需要调整,

看效果图:终点为北京点效果图

您要是有更佳方案欢迎您留言。

上一篇 下一篇

猜你喜欢

热点阅读