以下是我点思维图,
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,实际中根据自己的需要调整,
看效果图:终点为北京点效果图
您要是有更佳方案欢迎您留言。
网友评论