Я пытаюсь создать матрицу, элементами которой являются расстояния до кривой, которую я определил (код ниже):
![spiral curve in a matrix](https://i.stack.imgur.com/JBPVh.png)
Я хочувыполнить некоторые манипуляции с этим изображением, которое дает мне матрицу, содержащую все минимальные евклидовы расстояния между этой точкой и любой точкой спирали.
Я попытался использовать scipy
'ndimage.distance_transform_edt
следующим образом:
import scipy.ndimage as ndi
transformed = ndi.distance_transform_edt(spiral())
Но вывод не дает мне то, что я ищу!
Кто-нибудь знает, как сгенерировать эту матрицу?
Код для спиральной генерации ниже:
import numpy as np
import matplotlib.pyplot as plt
def pol2cart(rho, phi):
# https://stackoverflow.com/questions/20924085/python-conversion-between-coordinates
x = rho * np.cos(phi)
y = rho * np.sin(phi)
return(y, x)
def spiral():
C = 0.15
phi = np.linspace(6, 540, 1000)
rho = (1 - C * np.log(phi - 5))
# Now convert back to x, y coordinates
y, x = pol2cart(rho, np.deg2rad(phi))
# Center the spiral so we can see it better.
x -= x.min()
y -= y.min()
x += 1
y += 1.5
m = np.zeros((100, 100))
for i in range(len(x)):
try:
# Include some scaling factor to increase the size of the curve
m[int(x[i]*30), int(y[i]*30)] = 1
except IndexError:
continue
return m
plt.imshow(spiral())