在已经会利用C语言绘制余弦函数的基础上,我们来进一步探索如何利用C语言绘制正弦函数。
问题分析:
很自然的,我们想到将acos(y)换成asin(y),不就可以把画余弦函数换成画正弦函数了吗。可是,事实并没有那么简单。首先,0°~360°的正弦函数并不是一个简单的左右对称的图形;其次,反三角函数x=asin(y)的值域为(-π/2,π/2),所以并不能通过简单的求反三角函数值计算出(π,2π)这一段图形的横坐标。
这里提供一种方法。我们可以通过计算asin(y)来得到(0,π/2)这一段图形的横坐标;利用(0,π/2)的图形和(π/2,π)关于x=π/2轴对称,来得到(π/2,π)这一段图形的横坐标;通过计算π+asin(-y)的值,来得到(π,2π)这一段图形的横坐标。(详细分析过程见文章最后的附图)
具体程序:
#include <stdio.h> //详细分析过程见文章最后的附图
#include <math.h>
#define PAI 3.141592
int main()
{
double y;
double x,m;
double n;
for(y = 1; y >= 0; y -= 0.1)
{
m = asin(y)*10;
for(x = 1; x < m; x++)
{
printf(" ");
}
printf("*");
for( ; x < 31-m; x++)
{
printf(" ");
}
printf("*\n");
}
for( ; y >= -1; y -= 0.1)
{
n = asin(-y);
m = (PAI + n)*10;
for(x = 1;x < m; x++)
{
printf(" ");
}
printf("*");
for( ; x < 94-m; x++)
{
printf(" ");
}
printf("*\n");
}
return 0;
}
运行结果:
详细分析过程: