我们有将笛卡尔坐标转换为极坐标的作业,我什至不知道如何开始。所以任何一点帮助都会很好。
我们必须用 bash 编写代码。这是我们得到的示例:
script.sh 256 128
Result: 286.216 1.107
我们必须插入数字作为参数,我们必须使用 bc 解释器。
我们有将笛卡尔坐标转换为极坐标的作业,我什至不知道如何开始。所以任何一点帮助都会很好。
我们必须用 bash 编写代码。这是我们得到的示例:
script.sh 256 128
Result: 286.216 1.107
我们必须插入数字作为参数,我们必须使用 bc 解释器。
一些技巧:
-l
bc 选项sqrt()
anda()
函数scale=3
限制精度bc
从标准输入读取它的程序因为这是你的作业,所以我写了你的程序,但我把钩子放进去了。我的任务对你有一些好处:
我只是调用函数的例子,除非我完成我的程序,你会在我的 prog 结尾看到一些调用函数,这不是我的整个 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`