Loading... ## 功能描述 + 运行shell程序后要求用户输入两个参数:振幅、频率 + 根据振幅、频率在terminal窗口内,根据窗口大小使用字符进行sin波的绘制,超出窗口范围的不绘制 + terminal窗口左上角显示用户输入的两个参数:振幅、频率 ## 代码 ```bash #!/bin/bash # 接收用户输入前清除屏幕 clear # 接收振幅参数 接收频率参数 窗口左上角反馈用户输入的参数 read -rp "振幅:" amplitude read -rp "频率:" frequence # 获取终端窗口宽度 获取终端窗口高度 width=$(tput cols) height=$(tput lines) # 计算规避宽度 x1_width=$((${#amplitude} + 6)) x2_width=$((${#frequence} + 6)) if ((x1_width < x2_width)); then x1_width="$x2_width" fi # 计算PI值 pi=$(bc -l <<<"scale=10; 4*a(1)") for ((col = 0; col < width; col++)); do # 计算Y坐标值 row=$(printf "%.0f" "$(bc -l <<<"scale=10; $amplitude * s(((2*$frequence*$pi)/$width)*$col-$pi) + $amplitude")") # 判断字符星号的位置是否越界 if ((row <= height - 2)) && (((row > 1) || (col > x1_width - 1))); then # 设置输出的坐标位置 tput cup "$row" "$col" # 输出字符 echo "*" fi done # 光标归位 tput cup "$height" 0 ``` © 允许规范转载 打赏 赞赏作者 微信 赞