日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java 开发之 根据坐标计算长度、角度、位置等数据

發布時間:2024/1/1 java 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java 开发之 根据坐标计算长度、角度、位置等数据 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Java 開發之 根據坐標計算長度、角度、位置等數據

  • 坐標計算 其實也相當于再做三角運算, 每一個坐標在坐標圖中都可視作三角形的一個頂角
  • 有了這張圖, 大家就能清晰的想象出一個三角形,然后根據三角函數進行相關的計算
  • 如果有不了解三角函數算法的可以看看本人匯總的幾個三角算法文章《Java開發 三角形算法匯總》,本文的算法中也使用了該文章的算法

兩點之間的長度

/*** 兩點之間的長度* @param point0 坐標* @param point1 坐標* @return*/public static double getLengthOfSide(Point point0, Point point1){return Math.sqrt(Math.pow((point0.x-point1.x),2)+Math.pow((point0.y-point1.y),2));}

根據坐標 獲取角度

/*** 根據坐標 獲取角度* @param point0 坐標* @param degreePoint 坐標 獲取該點的角度* @param point2 坐標* @return*/public static int getDegree(Point point0, Point degreePoint, Point point2) {//向量的點乘int vector = (point0.x - degreePoint.x) * (point2.x - degreePoint.x) + (point0.y - degreePoint.y) * (point2.y - degreePoint.y);//向量的模乘double sqrt = Math.sqrt((Math.abs((point0.x - degreePoint.x) * (point0.x - degreePoint.x)) + Math.abs((point0.y - degreePoint.y) * (point0.y - degreePoint.y)))* (Math.abs((point2.x - degreePoint.x) * (point2.x - degreePoint.x)) + Math.abs((point2.y - degreePoint.y) * (point2.y - degreePoint.y))));//反余弦計算弧度double radian = Math.acos(vector / sqrt);//弧度轉角度制return (int) (180 * radian / Math.PI);}/*** 根據坐標 獲取角度* @param pA 坐標* @param degreePoint 坐標 獲取該點的角度* @param pC 坐標* @return*/public static double getDegree2(Point pA, Point degreePoint, Point pC) {double a = getLengthOfSide(pA,degreePoint),b = getLengthOfSide(pC,degreePoint),c = getLengthOfSide(pA,pC);return getDegree(a,b,c);}/*** 已知邊長 求AC 角度* @param a* @param b* @param c* @return*/public static double getDegree(double a,double b,double c){// 計算弧度表示的角double degrees = Math.acos((a*a + b*b -c*c)/(2.0*a*b));// 用角度表示的角return Math.toDegrees(degrees);}

根據角度和邊長獲取位置

/*** 根據角度和邊長獲取位置* @param p 起點位置* @param degree 角度* @param width 邊長* @return 位置*/public static double[] getPoint(Point p,double degree,double width){int v = (int) (degree / 90);double d = (degree % 90);double side = getRightSideFromDegree(d, width);//與中心的直角邊長double top = getRightSideFromLength(side, width);//另一直角邊double x = 0 , y = 0 ;switch (v){case 0:x = (p.x+top);y = (p.y-side);break;case 1:x = (p.x+side);y = (p.y+top);break;case 2:x = (p.x-top);y = (p.y+side);break;case 3:x = (p.x-side);y = (p.y-top);break;}return new double[]{x,y};}

最后推薦一個我自己寫的MVVM開源項目《Open MVVM》

有問題請私信,留言,或者發送郵件到我扣扣郵箱 qingingrunt2010

總結

以上是生活随笔為你收集整理的Java 开发之 根据坐标计算长度、角度、位置等数据的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。