在折线的给定点上查找切线

时间:2016-10-18 13:55:19

标签: coordinates esri polyline

我有一个代表道路的X,Y坐标列表。对于每5米,我需要计算这条路上切线的角度,正如我试图在图像中说明的那样。tangents of road

我的问题是这条道路没有我可以简单推导出的数学函数,它由坐标列表(UTM33N)表示。

在我的其他类似项目中,我们使用ArcGIS / ESRI库来执行此类地理功能,但在此项目中,我需要独立于需要最终用户拥有许可证的任何软件,因此我需要执行自己计算(或找到一个可以做到的免费/开源库)。

我使用三次样条函数在坐标之间舍入线,因为线段上的所有切线都只是与该段平行。

但现在我被卡住了。我正在考虑简单地计算线上任意三个点之间的角度(给定足够的点),并使用它来找到切线,但这听起来不是一个好方法。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

最后,我得出结论,这些点足以使用简单的几何形状给出准确的角度:

        //Calculate delta values
        var dx = next.X - curr.X;
        var dy = next.Y - curr.Y;
        var dz = next.Z - curr.Z;

        //Calculate horizontal and 3D length of this segment.
        var hLength = Math.Sqrt(dx * dx + dy * dy);
        var length = Math.Sqrt(hLength * hLength + dz * dz);

        //Calculate horizontal and vertical angles.
        hAngle = Math.Atan(dy/dx);
        vAngle = Math.Atan(dz/hLength);