我想在两个位置点之间绘制贝塞尔曲线。 我可以在some answers on stackoverflow之后绘制一些曲线,但是在某些情况下,贝塞尔曲线控制点的位置是错误的,尽管我对贝塞尔曲线使用了相同的简单公式。
我要做的是将两个贝塞尔曲线控制点放在正确的位置, -制作一条始终正交于两个位置之间的直线的线。 -制作两个贝塞尔曲线控制点(+和-),它们位于正交线上某处的中间,并且分别位于两个位置。
但是在某些情况下(两个位置不在水平或垂直位置),由于控制点不在正交线上,所以该线不会像下面那样正交,我想知道latitudeDelta标度和longitudeDelta之间是否存在差异规模,这会导致问题,但不确定。
我的计算结果如下。
const slopeOfLinearLine = (destination.latitude - origin.latitude) / (destination.longitude - origin.longitude)
const slopeOfOrthogonalLine = -1 / slopeOfLinearLine
const x = some x value to move right or left.
const y = slopeOfOrthogonalLine * x
const topOfTriangle = { latitude: midLinearLine.latitude + y, longitude: midLinearLine.longitude + x }
请让我知道任何人对此问题有任何想法。 谢谢!
答案 0 :(得分:1)
纬度和经度的单位度数(公里/英里)不同,因此对于通常使用的投影比例,因f=Cos(latitude)
而异,地图是各向异性的。
因此您可以:
1)在屏幕坐标系中生成控制点贝塞尔曲线(像素)
或
2)使用this page中的公式在纬度/经度系统中建立正确中间垂直线-在大圆弧处找到中间点,在该点找到方位,找到垂直方位,在某个距离处建立点从中间的垂直轴承开始