Расстояние в массивах - PullRequest
0 голосов
/ 20 апреля 2019

Итак, я должен написать функцию, которая вычисляет расстояние между двумя точками - p1 и p2 - из массива с несколькими точками. Каждая точка представляет собой квадрат с 20 м с каждой стороны. расстояние должно быть примерно таким:

d = sqrt(w(r1 −r2))^2 + (w(c1 −c2))^2 + (a1 −a2)^2 )

Где w равно 20, сторона квадрата, r1 и r2, индекс строки, c1 и c2 индекс столбца, а a1 и a2 значение каждой точки.

массив расстояний:

test = [ [206,205,204,190,208], [190,194,206,197,203], [196,196,205,201,193], [194,199,199,206,205], [192,196,195,201,193], [194,199,200,200,205], [196,196,195,200,193] ]

Может ли кто-нибудь помочь с этим простым?

1 Ответ

0 голосов
/ 20 апреля 2019

сначала вам нужно импортировать sqrt из квадратов математической библиотеки, можно либо рассчитать, умножив значение на себя (r2-r1) (r2-r1), либо используя pow из математической библиотеки.(r2-r1) ^ 2 не работает.

Строго говоря, A - это не массив, а список (строки) списков (столбцов).Но вы все равно можете считать это своего рода массивом.Вы получаете его значения, используя два индекса A [row_index] [column_index]

from math import sqrt, pow

A = [[206,205,204,190,208],
     [190,194,206,197,203],
     [196,196,205,201,193],
     [194,199,199,206,205],
     [192,196,195,201,193],
     [194,199,200,200,205],
     [196,196,195,200,193]]

W = 20


def distance(r1, c1, r2, c2):
    # get a values for point 1 and 2
    a1 = A[r1][c1]
    a2 = A[r2][c2]
    # calculate the distance
    d = sqrt(pow(W*(r2-r1), 2) + pow(W*(c2-c1), 2) + pow(a2-a1, 2))
    return d


print(distance(0,0,4,4))
>>> 113.88
...