我正在尝试编程公式以在绘制弧时计算新角度。如果我用图片解释它可能会更好。
上图是我在Google地球上绘制的图片。
目前我有一个绘制弧的函数给定一个(x,y)枢轴点,轴承和半径的距离
在绘图上绘制此弧(距离原点最远的弧)后,我需要移动原点,例如。如果轴承是170度,则左边线开始于170-90,右边线开始于170 + 90
我无法找到较小同心圆中的角度(或方位)公式。我想提前感谢任何人提供的任何帮助。
这是我计算和绘制弧的公式
def drawArc(lat1,lon1,lbearing,rbearing,hr): #draw Arc given lat/lon piviot point with the right and left bearing to draw the path and distance
arcstr=""
if rbearing < lbearing: #if the left bearing is already bigger than the right bearing, switch places. Test Case not proven yet! with winds coming from the east
lbearing,rbearing = rbearing,lbearing
while lbearing < rbearing:
arc1,arc2 = getEndpoint(lat1,lon1,lbearing,hr) #arc1 and arc2 are lat and lon respectively
arcCoord = "%f,%f,0\n"%(arc2,arc1)
arcstr+=arcCoord
lbearing+=1 #count
#attach the last remaining point which is the end point at the right bearing
arc1,arc2 = getEndpoint(lat1,lon1,rbearing,hr) #arc1 and arc2 are lat and lon respectively
arcCoord = "%f,%f,0\n"%(arc2,arc1)
arcstr+=arcCoord
return arcstr
要绘制三个弧,这里是调用函数的位置:
arc3=drawArc(latitude,longitude,leBearing,reBearing,arc3hr)
arc2=drawArc(latitude,longitude,leBearing-(SOME FORMULA TO GIVE ME THE EXTRA ANGLE/BEARING TO INTERSECT WITH THE OUTER LINE),reBearing+(SAME FORMULA HERE),arc2hr)
arc1=drawArc(latitude,longitude,leBearing-(SOME FORMULA TO GIVE ME THE EXTRA ANGLE/BEARING TO INTERSECT WITH THE OUTER LINE),reBearing+(SAME FORMULA HERE),arc1hr)
此图片上的已知点数:
答案 0 :(得分:1)
这里是必要的几何图形,假设我正确地解释了您的描述和图片。下面的图片(和android:process)显示了我们需要为theta解决的变量的图片。
余弦定律给了我们:
所以我们必须求解h,g和f,然后取结果的反余弦来得到θ。
根据正义法则......
我们可以用余弦法立即解决:
要找到段x_1和x_2的长度,我们需要角度theta_1,2,3 ...
使用这些角度和更多的正弦定律给我们x_1和x_2 ...
把这一切放在一起,你得到了
在替换的正确值后取这个混乱的,这取决于你选择的d(或DIST)。我不打算在这里写它。