C语言绘制余弦、正弦曲线

绘制余弦曲线

要求:在屏幕上用“*”(星号)显示0°~360°的余弦函数cos(x)曲线。(不使用数组)

问题分析与算法设计

对一般的显示器来说,只能按行输出,即:输出第一行信息后,想能向下一行输出,不能再返回到上一行。为了获得一个周期(0°~360°)的余弦函数图形,j就必须在一行中一次输出两个“*”。

为了同时得到余弦函数cos(x)图形在一行上的两个点,考虑利用cos(x)的左右对称性。将屏幕行方向定义为x,列方向定义为y。若定义图形的总宽度为62行,计算出x行0°~180°时y点坐标m,那么在同一行与之对称的180°~360°的y点坐标就应为62-m。程序中利用反余弦函数acos计算坐标(x,y)的对用关系。

程序说明与注释

/****************绘制0~2PI区间内的余弦曲线****************/
/***********编者:董炳政******编写时间2018/07/20**********/
/*******************************************************/
#include <stdio.h>
#include <math.h>

int main()
{
  double y;          /*纵坐标y*/
  int x,m;          /*横坐标x*/
  for(y = 1;y >= -1;y -= 0.1) /*纵轴y从1~-1,步长为0.1*/
  {
    m=acos(y)*10;      /*利用math.h中的反余弦函数,求对应横坐标的值,此时m为int型变量*/
    for(x = 1;x < m;x++)  /*开始逐行打点*/
      printf(" ");    /*在曲线定点右侧,打印空格*/
    printf("*");      /*第一个曲线定点打印“*”*/
    for(;x < 62-m;x++)   /*开始打印对称曲线定点,由于对称性x的终值为62-m*/
      printf(" ");    /*在两定点之间打印空格*/
    printf("*\n");     /*第二个曲线定点打印“*”,并换行*/
  }
  return 0;
}

运行结果:

[root@localhost 1_drawingcos]# ./drawingcos
*                               *
  *                           *
   *                         *
   *                        *
    *                      *
     *                     *
     *                    *
      *                   *
      *                  *
       *                 *
       *                *
        *               *
        *              *
         *             *
         *            *
          *           *
           *         *
           *        *
            *       *
             *     *
               **

绘制正弦曲线

在已经会绘制余弦曲线的基础上,我们来进一步探索如何利用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π)这一段图形的横坐标。

/****************绘制0~2PI区间内的弦曲线****************/
/***********编者:董炳政******编写时间2018/07/20**********/
/*******************************************************/
#include <stdio.h>
#include <math.h>
#define PI 3.14159

int main()
{
  double y;          /*纵坐标y*/
  int x,m;          /*横坐标x*/
  for(y = 1;y >= 0;y -= 0.1) /*先求0~PI,纵轴y从1~0,步长为0.1*/
  {
    m=asin(y)*10;      /*利用math.h中的反正弦函数,求对应横坐标的值,此时m为int型变量*/
    for(x = 1;x < m;x++)  /*开始逐行打点*/
      printf(" ");    /*在曲线定点右侧,打印空格*/
    printf("*");      /*第一个曲线定点打印“*”*/
    for(;x < 31-m;x++)   /*开始打印对称曲线定点,由于0~PI的对称性x的终值为31-m*/
      printf(" ");    /*在两定点之间打印空格*/
    printf("*\n");     /*第二个曲线定点打印“*”,并换行*/
  }
  for(y -= 0.1;y >= -1;y -= 0.1)
  {
    m=(PI+asin(-y))*10;
    for(x=1;x<m;x++)
      printf(" ");
    printf("*\n");
    for(;x<(62-(m-31));x++)
      printf(" ");
    printf("*\n");
  }
  return 0;
}

运行结果:

[root@localhost 1_drawingcos]# ./drawingsin
       * *
     *     *
    *       *
   *         *
   *          *
  *           *
  *            *
 *             *
 *              *
*               *
*               *
                *              *
                 *             *
                 *            *
                  *           *
                  *          *
                   *        *
                    *       *
                     *     *
                       **

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • C语言控制台应用程序GDI绘制正弦曲线

    出于本科教学的目的,需要使用C语言在Visual Studio下控制台应用程序中动态绘制曲线,在此查阅了一些资料,制作了一个绘制动态正弦曲线的Demo,大家可根据这个例子查阅GDI.GDI+手册,根据需求丰富自己的绘图程序. #include <windows.h>//引入wingdi.h #include <stdio.h> #include <math.h> #include <time.h> #include <conio.h> #defi

  • C++开发绘制正弦曲线的方法

    本文实例为大家分享了C++绘制正弦曲线的具体代码,供大家参考,具体内容如下 通过OnDraw函数绘制图形 过程为先绘制两个坐标轴,再绘制正弦曲线的方法.其中将曲线分解为660个像素点,让其看起来更像"曲线" void CMFCApplication3View::OnDraw(CDC* pDC) { CMFCApplication3Doc* pDoc = GetDocument(); ASSERT_VALID(pDoc); if (!pDoc) return; CPen cpen, pe

  • C语言控制台绘制曲线的实现代码

    本文实例为大家分享了C语言控制台绘制曲线的具体代码,供大家参考,具体内容如下 首先我们应该要知道曲线的方程,这里以直角坐标为例 设我们曲线方程为 y = f(x) 然后我们把它化成 y - f(x) = 0的形式 在程序中,我们检测每一个(x, y)位置,只要满足 y - f(x) = 0我们就画出这个点,反之就用空格填充 而在实际中为了减小误差,只要 | y - f(x) | < exp, 其中exp是一个误差范围,取10^-5就可以了 但是还是因为误差,只画曲线的轮廓的话,看起来就不太连续,

  • C语言绘制余弦、正弦曲线

    绘制余弦曲线 要求:在屏幕上用"*"(星号)显示0°~360°的余弦函数cos(x)曲线.(不使用数组) 问题分析与算法设计 对一般的显示器来说,只能按行输出,即:输出第一行信息后,想能向下一行输出,不能再返回到上一行.为了获得一个周期(0°~360°)的余弦函数图形,j就必须在一行中一次输出两个"*". 为了同时得到余弦函数cos(x)图形在一行上的两个点,考虑利用cos(x)的左右对称性.将屏幕行方向定义为x,列方向定义为y.若定义图形的总宽度为62行,计算出x

  • Python使用matplotlib绘制余弦的散点图示例

    本文实例讲述了Python使用matplotlib绘制余弦的散点图.分享给大家供大家参考,具体如下: 一 代码 import numpy as np import pylab as pl a = np.arange(0,2.0*np.pi,0.1) b = np.cos(a) #绘制散点图 pl.scatter(a,b) pl.show() 二 运行结果 三 修改散点符号代码 import numpy as np import pylab as pl a = np.arange(0,2.0*np

  • 如何用R语言绘制饼图和条形图

    R 语言提供来大量的库来实现绘图功能. 饼图,或称饼状图,是一个划分为几个扇形的圆形统计图表,用于描述量.频率或百分比之间的相对关系. R 语言使用 pie() 函数来实现饼图,语法格式如下: pie(x, labels = names(x), edges = 200, radius = 0.8, clockwise = FALSE, init.angle = if(clockwise) 90 else 0, density = NULL, angle = 45, col = NULL, bor

  • 如何用R语言绘制散点图

    散点图是将所有的数据以点的形式展现在直角坐标系上,以显示变量之间的相互影响程度,点的位置由变量的数值决定,每个点对应一个 X 和 Y 轴点坐标. 散点图可以使用 plot() 函数来绘制,语法格式如下: plot(x, y, type="p", main, xlab, ylab, xlim, ylim, axes) x 横坐标 x 轴的数据集合 y 纵坐标 y 轴的数据集合 type:绘图的类型,p 为点.l 为直线, o 同时绘制点和线,且线穿过点. main 图表标题. xlab.

  • 用R语言绘制函数曲线图

    函数曲线图是研究函数的重要工具. R 中 curve() 函数可以绘制函数的图像,代码格式如下: curve(expr, from = NULL, to = NULL, n = 101, add = FALSE, type = "l", xname = "x", xlab = xname, ylab = NULL, log = NULL, xlim = NULL, -) # S3 函数的方法 plot(x, y = 0, to = 1, from = y, xlim

  • R语言绘制空间热力图实例讲解

    先上图 R语言的REmap包拥有非常强大的空间热力图以及空间迁移图功能,里面内置了国内外诸多城市坐标数据,使用起来方便快捷. 开始首先安装相关包 install_packages("devtools") install_packages("REmap") library(devtools) library(REmap) 我们来试试其强大的城市坐标获取功能 city<- c("beijing","上海") get_geo_

  • R语言绘制地图实例讲解

    setwd("C:/Users/75377/Desktop/SHEEP_ROH") png("12.png",width = 7000,height = 5500,pointsize = 170) par(mai = c(12,12,12,12),mgp = c(2.1,0.5,0)) #地图数据下载http://cos.name/wp-content/uploads/2009/07/chinaprovinceborderdata_tar_gz.zip librar

  • R语言绘制散点图实例分析

    散点图显示在笛卡尔平面中绘制的许多点. 每个点表示两个变量的值. 在水平轴上选择一个变量,在垂直轴上选择另一个变量. 使用plot()函数创建简单散点图. 语法 在R语言中创建散点图的基本语法是 - plot(x, y, main, xlab, ylab, xlim, ylim, axes) 以下是所使用的参数的描述 - x是其值为水平坐标的数据集. y是其值是垂直坐标的数据集. main要是图形的图块. xlab是水平轴上的标签. ylab是垂直轴上的标签. xlim是用于绘图的x的值的极限.

  • R语言绘制折线图实例分析

    折线图是通过在它们之间绘制线段来连接一系列点的图. 这些点在它们的坐标(通常是x坐标)值之一中排序. 折线图通常用于识别数据中的趋势. R语言中的plot()函数用于创建折线图. 语法 在R语言中创建折线图的基本语法是 - plot(v,type,col,xlab,ylab) 以下是所使用的参数的描述 - v是包含数值的向量. 类型采用值"p"仅绘制点,"l"仅绘制线和"o"绘制点和线. xlab是x轴的标签. ylab是y轴的标签. main是

  • R语言绘制直方图实例讲解

    直方图表示被存储到范围中的变量的值的频率. 直方图类似于条形图,但不同之处在于将值分组为连续范围. 直方图中的每个柱表示该范围中存在的值的数量的高度. R语言使用hist()函数创建直方图. 此函数使用向量作为输入,并使用一些更多的参数来绘制直方图. 语法 使用R语言创建直方图的基本语法是 hist(v,main,xlab,xlim,ylim,breaks,col,border) 以下是所使用的参数的描述 v是包含直方图中使用的数值的向量. main表示图表的标题. col用于设置条的颜色. b

随机推荐