Python算法,用无人机扫描矩形区域并计算飞行时间
我有一个课程项目,需要编写python算法来完成以下步骤: 1-为用户拍摄相机角度、飞行高度和速度 2-从用户处获取x和y(代表经度和高度) 3-计算无人机需要扫描的矩形区域 4-根据摄影机角度将区域划分为列 5-使无人机从第一列的中间开始从顶部移动到底部,然后移动下一列宽度的一半并从底部移动到顶部。重复上述步骤,直到覆盖整个区域 6-计算距离,然后计算飞行时间 前4个步骤很简单,我添加了它们以澄清任务细节 第五步所需的算法以及如何计算飞行时间是我需要帮助的 一般来说,我不熟悉用python编写算法和编码,有人能帮助我编写步骤5中所需的算法吗 我添加了我编写的代码来获取总距离。我一直得到距离=0。另外,我认为路径的距离计算不正确(请参阅所附的屏幕截图以显示路径) #获取用户的输入Python算法,用无人机扫描矩形区域并计算飞行时间,python,algorithm,Python,Algorithm,我有一个课程项目,需要编写python算法来完成以下步骤: 1-为用户拍摄相机角度、飞行高度和速度 2-从用户处获取x和y(代表经度和高度) 3-计算无人机需要扫描的矩形区域 4-根据摄影机角度将区域划分为列 5-使无人机从第一列的中间开始从顶部移动到底部,然后移动下一列宽度的一半并从底部移动到顶部。重复上述步骤,直到覆盖整个区域 6-计算距离,然后计算飞行时间 前4个步骤很简单,我添加了它们以澄清任务细节 第五步所需的算法以及如何计算飞行时间是我需要帮助的 一般来说,我不熟悉用python编写
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)
}