Вот сценарий bash, который я собрал вместе, который выполнит преобразование ImageMagick, заданное ypnos во всех файлах png в каталоге. Вы можете сделать его рекурсивным, заменив * в третьей строке командой find.
#!/bin/bash
for file in *
do
if [[ $file =~ (.+)-mask\.png ]]; then
echo "Ignoring mask $file"
elif [[ $file =~ (.+)\.png ]]; then
echo "Generating mask for $file"
basefn=${BASH_REMATCH[1]}
convert "$basefn.png" -channel Alpha -negate -separate "$basefn-mask.png"
fi
done
Так что вы ищете евклидово расстояние на двумерной поверхности тора, я собираю.
sqrt(min(|x1 - x2|, w - |x1 - x2|)^2 + min(|y1 - y2|, h - |y1 - y2|)^2)
где W
и H
H - ширина (x) и высота (y) сетки соответственно.
Если ваша сетка охватывает по краям, будет четыре расстояния между каждой координатой (для 2 измерений). Я предполагаю, что вы хотите знать самое короткое расстояние.
Давайте используем меньшую сетку, числа немного более управляемые. Скажи сетка 10x10. Давайте также будем использовать только одно измерение для простоты (в этом случае будет всего в двух расстояниях), так же, как у вас есть в своем примере. Скажем, у нас есть точки 0,2 и 0,6. Две расстояния между точками являются d_1 = (6-2) = 4 и d_2 = (10-6) + 2 = 6, поэтому в этом случае кратчайшее расстояние будет D_1.
В целом вы можете сделать следующее:
, затем используя теорему Пифагораса, кратчайшее расстояние между двумя точками является квадратный корень из суммы квадратов кратчайших расстояний в каждом направлении. Вы можете рассчитать другие три расстояния путем расчета теоремы Пифагорас, используя другие комбинации расстояний в каждом направлении.
Как сказал другой плакат, форма, образующаяся при обертывании по краям (для 2-мерной сетки), является тором, и я думаю, что метод, который я использовал выше, является таким же, как уравнение, которое дано, но имеет преимущество что его можно продлевать до N-измерения, если требуется. К сожалению, не очень простое визуализация выше 2 измерений.
Для точек (x1, y1) и (x2, y2) необходимо рассчитать 4 расстояния:
, а затем взять минимальный из тех.