A点轴承,B点轴承= C点(2点的交点)
非常感谢
科林
你必须得到线方程y = mx q,它计算L1和L2的m和q系数,以便得到两个方程式:
y=m1x + q1
y=m2x + q2
交叉点是这个线性系统的解决方案
x = (q1 – q2) / (m2 – m1); y = m2 / (m2-m1) * (q1 – q2) + q2
// Please check the equations I writing calculating it on the fly
您的数据是椭球上的两个点和两个角度(方位):
P1=[x1; y1],bearing1 = alfa1
P2=[x2; y2],bearing1 = alfa2
您必须在平面上投影点才能使用上述线性几何体.
我想你有wgs84分:使用proj4 API.
所以现在问题是从数据中得到经典线方程.
但我们可以用极地解释来处理这些界限:
给定点P0 = [x0,y0]和角度(α),线方程P(t)是
L(t) = [x0 + cos(alfa) * t,y0 + cos(alfa) * t ],with t in the range [-inf,+ inf]
所以
L1(t) = [y1 + cos(alfa1) * t,y1 + cos (alfa1) * t] ;
L2(t) = [y2 + cos(alfa2) * t,y2 + cos (alfa2) * t] ;
解决上述系统我们有:
T = (x1- x2) / (cos(alfa2) – cos(alfa1))
X = x1 + cos(alfa1) * T
Y = y1 + sin(alfa1) * T
你的解决方案是[X,Y].
之后你必须重新投入wgs84
您可以尝试避免投影数据并直接使用p1和P2的wgs84坐标;错误可能很小但你必须检查.
(请检查一下;我是在javascript deBUGing的会话中写的:-)
procedure FindIntersection(x1,y2,alfa1,x2,alfa2: double; out x,y: double);var t: double;begin t := (x1 - x2) / (cos(alfa2) - cos(alfa1)); x := x1 + cos(alfa1) * t; y := y1 + sin(alfa1) * t;end; (* Solution without reprojecting *)总结
以上是内存溢出为你收集整理的德尔福计算WGS84交点2点全部内容,希望文章能够帮你解决德尔福计算WGS84交点2点所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)