美文网首页
根据2个坐标计算旋转度数

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

作者: 余炳高笔记 | 来源:发表于2019-12-02 09:27 被阅读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,实际中根据自己的需要调整,

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

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

    相关文章

      网友评论

          本文标题:根据2个坐标计算旋转度数

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