当前位置: 首页 > 知识库问答 >
问题:

点C与大圆上弧AB的不正确距离

田信然
2023-03-14

我得到的CD长度不正确,其中D标记了弧AB上第三点C的投影:

输入以上代码::

startX,STARTY-弧的起始点坐标-->(48.1388,11.54988)

    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 

共有1个答案

公德明
2023-03-14

求点到弧的距离:

  1. 首先,找到圆弧所暗示的椭圆的中心
  2. 使用ATAN2
  3. 查找到点的角度
  4. 使用cos(角度)*r1,sin(角度)*r2
  5. 找到椭圆的x、y截距
  6. 使用从x、y截距到点的距离公式
 类似资料:
  • 给定圆心、半径和3个点,我想通过指定开始绘制的角度和旋转的角度,绘制一条从第一个点开始、穿过第二个点并在第三个点结束的圆弧。为此,我需要计算圆弧上的点。我希望计算的点数是可变的,这样我就可以调整计算圆弧的精度,这意味着我可能需要一个循环,在计算完一个点后,通过旋转一点来计算每个点。我已经阅读了这个问题的答案,用2个点和圆心画圆弧,但它只解决了角度计算的问题,因为我不知道如何画画布。实现了“draw

  • 我需要找到从圆和矩形的交点创建的最大弧线。我有了圆心,半径和矩形的坐标,我需要找到与圆心交点的角。 我有一个可以工作的代码,但它是通过迭代圆周上的点来计算解的,我想知道是否有更优雅的方法来使用三角学而不是“蛮力”来计算解。 这是我的代码:

  • 主要内容:弧形,圆形,示例,实例-2弧形 以下代码显示如何绘制以,为中心,半径为并从角度延伸到角度(270度长)的圆弧。 上面的代码生成以下结果。 圆形 类创建一个新的圆,其中指定的半径和中心位置以像素为单位。 上面的代码生成以下结果。 示例 以下代码显示了如何使用构造函数传递半径和中心。 上面的代码生成以下结果。 实例-2 圈形与DropShadow,如下代码所示 - 方法返回节点的边界区域,例如其宽度和高度。计算包括节点的实际尺

  • 你如何准确计算球体上不同高度两点之间的距离?如果两点在同一高度,这是一个简单的大圆计算。但是精确地解释稳定爬升或下降的附加术语是什么呢?假设我们在谈论一架太空飞机,它在起飞后一段很长的距离内稳定地爬升到很高的高度。 插图: http://i.imgur.com/nAp1S.png

  • arcTo()介绍 arcTo()方法接收5个参数,分别是两个切点的坐标和圆弧半径。这个方法是依据切线画弧线,即由两个切线确定一条弧线。 具体如下。 arcTo(x1,y1,x2,y2,radius) 这个函数以给定的半径绘制一条弧线,圆弧的起点与当前路径的位置到(x1, y1)点的直线相切,圆弧的终点与(x1, y1)点到(x2, y2)的直线相切。因此其通常配合moveTo()或lineTo(

  • 我想计算从纬度和经度给定的点到两点(大圆的一部分)给定的线段的距离。WGS84中给出了所有坐标。 我知道如何在笛卡尔坐标系下计算,但不是在球体上。有人能提供公式吗?