Конвертировать декартов в поляр в баш

Мы получили домашнее задание по преобразованию декартовых координат в полярные координаты, и я даже не знаю, с чего начать. Так что любая маленькая помощь будет хорошей.

Мы должны написать код на bash. Вот пример, который мы получили:

script.sh 256 128
Result: 286.216 1.107

Мы должны вставить число в качестве параметров, и мы должны использовать интерпретатор bc.

http://linux.die.net/man/1/bc

2 ответа

Решение

Потому что это твоя домашняя работа, я написал твою программу, но вложил в нее хук. Моя задача имеет для тебя некоторые преимущества:

  1. Вы можете взломать Баш.
  2. Вы можете взломать awk.
  3. Вы можете предотвратить математику в Баш
  4. Вы можете предотвратить выражение 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 читает свою программу из стандартного ввода
Другие вопросы по тегам