Python算法,用无人机扫描矩形区域并计算飞行时间

Python算法,用无人机扫描矩形区域并计算飞行时间,python,algorithm,Python,Algorithm,我有一个课程项目,需要编写python算法来完成以下步骤: 1-为用户拍摄相机角度、飞行高度和速度 2-从用户处获取x和y(代表经度和高度) 3-计算无人机需要扫描的矩形区域 4-根据摄影机角度将区域划分为列 5-使无人机从第一列的中间开始从顶部移动到底部,然后移动下一列宽度的一半并从底部移动到顶部。重复上述步骤,直到覆盖整个区域 6-计算距离,然后计算飞行时间 前4个步骤很简单,我添加了它们以澄清任务细节 第五步所需的算法以及如何计算飞行时间是我需要帮助的 一般来说,我不熟悉用python编写

我有一个课程项目,需要编写python算法来完成以下步骤:

1-为用户拍摄相机角度、飞行高度和速度

2-从用户处获取x和y(代表经度和高度)

3-计算无人机需要扫描的矩形区域

4-根据摄影机角度将区域划分为列

5-使无人机从第一列的中间开始从顶部移动到底部,然后移动下一列宽度的一半并从底部移动到顶部。重复上述步骤,直到覆盖整个区域

6-计算距离,然后计算飞行时间

前4个步骤很简单,我添加了它们以澄清任务细节

第五步所需的算法以及如何计算飞行时间是我需要帮助的

一般来说,我不熟悉用python编写算法和编码,有人能帮助我编写步骤5中所需的算法吗

我添加了我编写的代码来获取总距离。我一直得到距离=0。另外,我认为路径的距离计算不正确(请参阅所附的屏幕截图以显示路径)

#获取用户的输入

height = int(input("Enter height:"))
angle = int(input("Enter angle:"))
speed = int(input("Enter speed:"))
x1 = int(input("Enter x1:"))
y1 = int(input("Enter y1:"))
x2 = int(input("Enter x2:"))
y2 = int(input("Enter y2:"))

distance(height, angle, speed, x1, y1, x2, y2)

我认为这更像是一个公式,而不是一个“算法”

您得到的飞行路径是一系列的“S”,从左上角开始,向下,掉头,后退,掉头,向下等等。
根据您在第5步中所写的内容,当无人机进行U形转弯时,它会横向移动到柱宽度的一半

总“高度”由
y
输入给出,因此
h1
与之类似(减去一些相机角度等)。 字段的总宽度由
x
输入给出(我想)。
假设我们有宽度为w1的
n
列,我们得到U形转弯的次数:
每个移动
w1/2
侧移,因此覆盖范围是(对于
m
侧移):
1+m*(w1/2)=n*w1

这导致
m=2n-1
(四舍五入后)掉头。
计算出您需要
2n*h1
(向上/向下飞行-奇数/偶数情况下可能
2n-1
)+
(2n-1)*w1
侧向飞行

要获取完整路径,请执行以下操作:

direction = 'down'
nextUTurn = 'left'
columnsNeeded = n
for (columnIndex of columnsNeeded) {
  print(direction)
  print('U-Turn ' + nextUTurn)
  direction = getOther(direction)
  nextUTurn = getOther(nextUTurn)
}

我投票决定结束,因为需要细节/清晰。这是一个课程项目,但是你有没有被教过与你的家庭作业相关的东西,可以作为参考?你有没有在前三步中挣扎过?我不太明白你在第四步应该做什么。其余的听起来也很简单。你面临什么问题?征求意见/资源是一个不重要的话题。你应该把你的问题缩小到一个问题,因为现在我有6个问题。谢谢你的评论。我刚刚编辑了这个问题,第五步是我需要帮助的地方,我可以写这样的算法,从上到下扫描/映射一个矩形区域,然后从下到上,直到覆盖已经划分为列的整个区域。你能在纸上计算距离吗?那么时间就是距离除以速度。当您有了精确的公式后,您可以编写一个Python程序,从输入变量为您计算公式。或者你需要编写一个程序来实际控制无人机吗?距离取决于用户输入的两个值(矩形的面积和将矩形分割成若干列的无人机相机角度)。我需要的是如何计算无人机飞行到覆盖所有区域的距离。它从上到下飞行,然后移动到下一列,从下到上飞行,依此类推。然后你知道矩形从上到下的距离和两条“车道”之间的宽度。因此,总行驶距离是你必须在顶部->底部行驶多少次(反之亦然)+你必须横向行驶多少次乘以宽度。谢谢你的回答,但还不清楚。你能通过编写算法/循环来详细说明u形转弯的距离吗?如果你想得到总距离,这只是一个方程式。我仍然不知道这将如何计算路径的距离。请查看我在问题正文中添加的代码,并告诉我您的意见/更正。感谢you@DerekWilliams我编写的伪代码将打印出整个路径。因此,您也可以打印距离和/或求和,您能告诉我如何计算吗?
direction = 'down'
nextUTurn = 'left'
columnsNeeded = n
for (columnIndex of columnsNeeded) {
  print(direction)
  print('U-Turn ' + nextUTurn)
  direction = getOther(direction)
  nextUTurn = getOther(nextUTurn)
}