Python: расчет общей дистанции пути - PullRequest
0 голосов
/ 09 апреля 2020

У меня есть программа, которая предназначена для расчета общего расстояния набора координат для Python Черепаха. На данный момент у меня есть функция с именем def define_distance, которая вычисляет расстояние только между двумя точками. Мне нужно:

  • установить переменную для хранения общего расстояния пути
  • использовать al oop для расчета расстояния по точкам индивидуально
  • попробовать и используйте функцию calc_distance
  • , чтобы вычислить путь всех мест, возвращающихся к исходному

Как бы я go сделал это? Я новичок в Python, но я знаю большинство основ. Вот что моя программа отображает в конце:

расстояние между точками: 72.59476565152615 - но это между двумя точками, а не общее

import math

selected_map = [(12, 34), (45, -55), (-89, 33), (60, 12)]

def calculate_distance(starting_x, starting_y, destination_x, destination_y):
    distance = math.hypot(destination_x - starting_x, destination_y - starting_y)  # calculates Euclidean distance (straight-line) distance between two points
    return distance

def calculate_path(selected_map):

- The code I am asking for help on needs to go here in this function



print (distance)

Ответы [ 3 ]

2 голосов
/ 09 апреля 2020
selected_map = [(12, 34), (45, -55), (-89, 33), (60, 12)]

def calculate_distance(starting_x, starting_y, destination_x, destination_y):
    distance = math.hypot(destination_x - starting_x, destination_y - starting_y)  # calculates Euclidean distance (straight-line) distance between two points
    print('Segment Dist: ', distance)
    return distance

def calculate_path(selected_map, dist_travel=0):
    for i in range(len(selected_map)-1):
        dist_travel += calculate_distance(selected_map[i-len(selected_map)+1][0], selected_map[i-len(selected_map)+1][1], selected_map[i][0], selected_map[i][1])
    return dist_travel

print('Total Distance: ', calculate_path(selected_map))

Выход:

Segment Dist:  94.92101980067429
Segment Dist:  160.31219541881399
Segment Dist:  150.4725888658795
Total Distance:  405.70580408536773
1 голос
/ 09 апреля 2020

Прежде всего, вам нужно определить начальную точку. Например, определение двух переменных текущего местоположения.

x_current = 0
y_current = 0

И переменная, которая сохраняет текущую длину.

current_length = 0

Затем вы начинаете цикл по selected_map. вычисление расстояния между текущим x, y и парой x, y и добавление его в текущую длину.

for pair in selected_map:
  current_length += calculate_distance(x_current, y_current, pair[0], pair[1])
  x_current = pair[0]
  x_current = pair[1]

return current_length
1 голос
/ 09 апреля 2020

Чтобы рассчитать длину пути (например, общее расстояние, как вы упомянули, а не net смещение), просто выполните итерацию по каждой точке и вычислите ее расстояние от последней пройденной точки:

import math

def calculate_distance(starting_x, starting_y, destination_x, destination_y):
    distance = math.hypot(destination_x - starting_x, destination_y - starting_y)  # calculates Euclidean distance (straight-line) distance between two points
    return distance

def calculate_path(selected_map):
    total_distance = 0
    current_point = selected_map[0]
    for next_point in selected_map[1:]:
        current_distance = calculate_distance(
            current_point[0], current_point[1],
            next_point[0], next_point[1]
        )
        print(current_point, 'to', next_point, '=', current_distance)
        total_distance += current_distance
        current_point = next_point
    return total_distance

selected_map = [(12, 34), (45, -55), (-89, 33), (60, 12)]
distance = calculate_path(selected_map)

print ('Total Distance =', distance)

Выходные данные :

(12, 34) to (45, -55) = 94.92101980067429
(45, -55) to (-89, 33) = 160.31219541881399
(-89, 33) to (60, 12) = 150.4725888658795
Total Distance = 405.70580408536773
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...