以下是我點思維圖,
1.通過計算直角三角形的一個非直角角度鳞上,
2.通過三角形點內角和為180度特點
3.然后根據(jù)起點(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转培,實際中根據(jù)自己的需要調整,
看效果圖:終點為北京點效果圖
您要是有更佳方案歡迎您留言浆竭。