Конвертировать декартов в поляр в баш
Мы получили домашнее задание по преобразованию декартовых координат в полярные координаты, и я даже не знаю, с чего начать. Так что любая маленькая помощь будет хорошей.
Мы должны написать код на bash. Вот пример, который мы получили:
script.sh 256 128
Result: 286.216 1.107
Мы должны вставить число в качестве параметров, и мы должны использовать интерпретатор bc.
2 ответа
Решение
Потому что это твоя домашняя работа, я написал твою программу, но вложил в нее хук. Моя задача имеет для тебя некоторые преимущества:
- Вы можете взломать Баш.
- Вы можете взломать awk.
- Вы можете предотвратить математику в Баш
- Вы можете предотвратить выражение Radian/Degree
Я только пример для функции вызова, если я не завершу свою программу, вы увидите в конце моей программы, какой-то вызов функции, это не весь мой main.write для него main.
Моя программа:
#!/bin/bash
### X and Y
export x=$1
export y=$2
####calculating r:
export r=`echo "sqrt(x*x+y*y)" |bc -l `
####Radian to Degree
r2d(){
echo "180,3.14156265358979323846,`echo $1`" |awk ' BEGIN {FS=","} { print $1/$2*$3'} ###HOOK
}
####Degree to Radian
d2r(){
echo "180,3.14156265358979323846,`echo $1`" |awk ' BEGIN {FS=","} { print $2/$1*$3'} ###HOOK
}
teta(){
if [ $x -lt 0 ];then
echo `echo "$1,$2" | awk 'BEGIN {FS=","} {print 3.14156265358979323846+atan2($2/$1,1)'}` ####HOOK
fi;
if [ $x -gt 0 ];then
echo `echo "$1,$2" | awk 'BEGIN {FS=","} {print atan2($2/$1,1)'}` ####HOOK
fi;
}
echo `r2d 2.09`
echo `d2r 120`
echo `teta $x,$y`
Несколько советов:
- использовать
-l
вариант до н.э. - вам понадобится
sqrt()
а такжеa()
функции - уяснить, какое значение равно "х", а какое "у"
- использование
scale=3
ограничить точность bc
читает свою программу из стандартного ввода