Kel*_*reu 1 c# algorithm math geometry 2d
我有AB由两个2D点定义的线段A,B。
我所试图做的是找到一个点C,随着距离d远离B。这两个约束BC必须垂直于AB 并且 BC总是90相对于 逆时针旋转度数AB。
到目前为止,我有以下内容
double d = .01;
Coordinate C = new Coordinate(A.Lat - B.Lat, A.Long - B.Long);
C.Long = C.Long * A.Long * Math.Cos(90);
C.Lat = C.Lat * A.Lat * Math.Cos(90);
C.Long = A.Long + C.Long * d;
C.Lat = A.Lat + C.Lat * d;
Run Code Online (Sandbox Code Playgroud)
基本上我要问的是,我哪里出了问题?是c#代码吗?这是逻辑吗?解决C使用这两个约束的步骤是什么。
将 AB 向量归一化并将其旋转 90 度:
ABY = B.Y - A.Y
ABX = B.X - A.X
Len = Sqrt(ABY*ABY + ABX*ABX)
C.X = B.X - d * ABY / Len
C.Y = B.Y + d * ABX / Len
Run Code Online (Sandbox Code Playgroud)
请注意,地理坐标(纬度/经度)和大距离的结果并不准确。
链接以供进一步参考(Bearing然后是部分Destination point given distance and bearing from start point)