首页 > 解决方案 > 使用小册子计算半圆的主弧

问题描述

我正在使用传单绘制半圆,并且使用它绘制小弧线没有问题:

L.semiCircle([51.5, -0.09], {
    radius: 500,
    startAngle: 45,
    stopAngle: 135
}).addTo(map);

但是要画一条主要的弧线我遇到了麻烦,因为有时要按顺时针方向绘制点,有时要按逆时针方向绘制点,但我不知道它们朝哪个方向移动,它可以改变从地图到地图,所以不能有一个万能的解决方案?我有一个起点、终点和半径。我可以使用 getBearing 计算来获取 startAngle 和 endAngle。

我认为这个数学会给我中点:

double c = Math.Atan2(arc.start.lat, arc.end.lat, arc.start.lng, arc.end.lng);
double x_mid = R * Math.Cos(c);
double y_mid = R * Math.Sin(c);

但这会给我点之间的圆上最短的点,我想要主弧而不是次弧,我如何获得主弧 x_mid 和 y_mid 以便我可以在传单半圆 getDirection 中使用它?

   L.semiCircle([arc.start.lat, arc.start.lng], { radius: arc.radius })
            .setDirection(90, 90)
            .addTo(map);

或者,还有更好的方法?

希望这是有道理的。谢谢!!!

标签: mathleafletautomatic-ref-counting

解决方案


推荐阅读