Java 点C与大圆上圆弧AB的距离不正确
我得到的CD长度不正确,其中D标记了弧AB上第三点C的投影: 输入上述代码:: startX,startY-弧的起点坐标-->(48.1388,11.54988) 端点,端点的弧坐标-->(48.139,11.54988) thirdX,thirdY-点C离弧的坐标-->(48.1389,11.5496) dXt将为-13.41654587971497米,但预期值为31.16949米 我已经根据我发现的方程式编写了代码: 我无法找到错误值的原因,请帮助。谢谢 private static void pointToArcDistance(double thirdX, double thirdY, double startX, double startY, double endX, double endY) { double R = 6371000; double φ1 = startX * Math.PI / 180; double φ2 = endX * Math.PI / 180; double Δφ = (endX - startX) * Math.PI / 180; double Δλ = (endY - startY) * Math.PI / 180; double a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ / 2); double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)); double d13 = R * c; // distance between start & endPoint in meters double brng12 = bearing(startX, startY, endX, endY); double brng13 = bearing(startX, startY, thirdX, thirdY); double δ13 = d13 / R; double dXt = Math.asin(Math.sin(δ13) * Math.sin(brng13 - brng12)) * R; System.out.println("tangent distance(CD)::" + dXt); } private static double bearing(double lat1, double long1, double lat2, double long2) { double y = Math.sin(long2 - long1) * Math.cos(lat2); double x = Math.cos(lat1) * Math.sin(lat2) - Math.sin(lat1) * Math.cos(lat2) * Math.cos(long2 - long1); double polarDegrees = toDegrees(Math.atan2(y, x)); return polarDegrees 专用静态无效点到ArcDistance(双三分之一、双三分之一、双星X、双星、, 双端X,双端Y){ 双R=6371000; 双φ1=startX*Math.PI/180; 双φ2=endX*Math.PI/180; 双Δφ=(endX-startX)*数学PI/180; 双Δλ=(endY-startY)*数学π/180; 双a=数学sin(Δφ/2)*数学sin(Δφ/2)+ 数学cos(φ1)*数学cos(φ2)* 数学sin(Δλ/2)*数学sin(Δλ/2); double c=2*Math.atan2(Math.sqrt(a),Math.sqrt(1-a)); double d13=R*c;//起点和终点之间的距离(米) 双轴承12=轴承(startX、startY、endX、endY); 双轴承13=轴承(startX、startY、THERDX、THERDY); 双δ13=d13/R; double dXt=Math.asin(Math.sin(δ13)*Math.sin(brng13-brng12))*R; System.out.println(“切线距离(CD):”+dXt); } 专用静态双轴承(双板条1、双长1、双板条2、双长2){ 双y=Math.sin(long2-long1)*Math.cos(lat2); 双x=数学cos(lat1)*数学sin(lat2)- 数学sin(lat1)*数学cos(lat2)*数学cos(long2-long1); 双极性=toDegrees(数学上的atan2(y,x));Java 点C与大圆上圆弧AB的距离不正确,java,geometry,line,point,Java,Geometry,Line,Point,我得到的CD长度不正确,其中D标记了弧AB上第三点C的投影: 输入上述代码:: startX,startY-弧的起点坐标-->(48.1388,11.54988) 端点,端点的弧坐标-->(48.139,11.54988) thirdX,thirdY-点C离弧的坐标-->(48.1389,11.5496) dXt将为-13.41654587971497米,但预期值为31.16949米 我已经根据我发现的方程式编写了代码: 我无法找到错误值的原因,请帮助。谢谢 private static voi
返回极坐标以查找点到圆弧的距离:
您可以在此处将弧度变换为度:
double polarDegrees = toDegrees(Math.atan2(y, x));
但是接下来的计算需要弧度
因此,只需删除
toDegrees
您的问题是关于点到弧的距离,但您发布的函数是关于点到线的抱歉。该方法是关于点到弧的距离。我现在也更新了名称。非常感谢您的快速响应。我无法正确地显示它,findi的目的是什么第一步是确定椭圆的中心?第三步是r1和r2是什么?请帮助我,我不是一个数学爱好者。1.你想找到椭圆的中心,这样你就可以找到从中心到点的角度。2.椭圆有两个半径(r1和r2):每个轴一个。