Android獲取兩條線之間的夾角度數


核心代碼

centerX、centerY為公共點,xInView、yInView為觸摸點的坐標

 /** *獲取兩條線的夾角 * @param centerX * @param centerY * @param xInView * @param yInView * @return */ public static int getRotationBetweenLines(float centerX, float centerY, float xInView, float yInView) { double rotation = 0; double k1 = (double) (centerY - centerY) / (centerX * 2 - centerX); double k2 = (double) (yInView - centerY) / (xInView - centerX); double tmpDegree = Math.atan((Math.abs(k1 - k2)) / (1 + k1 * k2)) / Math.PI * 180; if (xInView > centerX && yInView < centerY) { //第一象限 rotation = 90 - tmpDegree; } else if (xInView > centerX && yInView > centerY) //第二象限 { rotation = 90 + tmpDegree; } else if (xInView < centerX && yInView > centerY) { //第三象限 rotation = 270 - tmpDegree; } else if (xInView < centerX && yInView < centerY) { //第四象限 rotation = 270 + tmpDegree; } else if (xInView == centerX && yInView < centerY) { rotation = 0; } else if (xInView == centerX && yInView > centerY) { rotation = 180; } return (int) rotation; } 

具體使用

 @Override public boolean onTouch(View v, MotionEvent event) { float centerX = img_colors.getWidth() / 2; float centerY = img_colors.getHeight() / 2; setPointerRotation(Tools.getRotationBetweenLines(centerX, centerY, event.getX(), event.getY())); return true; }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM