В той же ветке, как this question, я даю вам еще один выстрел и спрошу, чтобы помочь решить, как я должен позаботиться об этой проблеме. Я пишу Баш скрипт, который необходимо выполнить следующие действия:Более простая математическая помощь в bash!
- У меня есть круг в
x
иy
с радиусомr
. - Я указываю
resolution
, который является расстоянием между точками, которые я проверяю. - Мне нужно зациклиться на x и y (от -r до r) и проверить, находится ли текущий (x, y) в круге, но я перебираю дискретные
i
иj
. - Затем
i
иj
необходимо перейти с-r/resolution
на+r/resolution
. - В цикле, что должно произойти, это
echo "some_text i*resolution j*resolution 15.95 cm"
(примечание отсутствует$
, потому что я невежественен). Этот вывод - это то, что я действительно ищу.
Мой лучший снимок до сих пор:
r=40.5
resolution=2.5
end=$(echo "scale=0;$r/$resolution") | bc
for ((i=-end; i<=end; i++));do
for ((j=-end; j<=end; j++));do
x=$(echo "scale=5;$i*$resolution") | bc
y=$(echo "scale=5;$j*$resolution") | bc
if ((x*x + y*y <= r*r));then <-- No, r*r will not work
echo "some_text i*resolution j*resolution 15.95 cm"
fi
done
done
У меня было почти достаточно с Баш и может выглядеть в KSH, как был предложено кем-то в моем последнем вопросе, но если кто-нибудь знают правильный путь для выполнения этого, пожалуйста, дайте мне знать! Каким бы ни было решение этого, он наверняка установит мой будущий темперамент в стиле bash.
Благодарим за любую помощь; Я вернусь утром несколько часов, чтобы обновить и ответить. – physicsmichael
ksh? пожалуйста...это происходит от плохого к худшему. Мое мнение таково, что вы используете неправильный инструмент. предполагается, что оболочка будет использоваться для запуска программ, а не для математики. –
У меня были проекты, которые настаивали на том, что все должно было быть сделано в оболочке раньше, потому что «никто не знал perl». Иногда вам просто нужно заставить его работать с ограничениями, которые вам даны. Даже если эти ограничения не являются разумными. –