控制台绘制正弦/余弦曲线

余弦曲线

当然了,这里我们不用数组……否则就没技术含量了。

正弦曲线的特点是左右对称,且左边部分的纵坐标是从1一直降到-1的,相应的右边的纵坐标是从-1一直递增到1。难点在于显示器只能按行输出,也就是说输出了一行后不能再掉头输出上一行的信息。

我们自定义一个缩放系数a为10,用acos(-1)*10可以算得等于31,因此总宽度为62,起点的横坐标为0,终点的横坐标为61。因为余弦曲线对称,所以在0~180度,也就是左边部分时,横坐标为k时对应的相同纵坐标的180~360度,也就是右边部分的横坐标为(62-k)。

#include <stdio.h>
#include <math.h>

int main()
{
    double y;
    int x,k;
    for(y=1;y>=-1;y-=0.1)
    {
        k=acos(y)*10;
        for(x=1;x<k;x++)
            printf(" ");
        printf("*");
        for(;x<62-k;x++)
            printf(" ");
        printf("*\n");
    }
    return 0;
}

正弦曲线

正弦曲线就要难得多了……我们依旧沿用余弦曲线示例中的总宽度(62)。

相信对于左边部分大家都可以信手拈来……

        if(1<=k&&k<=15)
        {
            for(x=1;x<k;x++)
                printf(" ");
            printf("*");

            for(;x<30-k;x++)
                printf(" ");
            printf("*\n");
        }

右边部分我也弄了好久,主要是忽略了asin(-1)*10是负数……哎

所以发现了这一点之后就应该将if语句这样写:

if(-15<=k&&k<=-1)

但是还有一点要注意的,我们不是在用数组打印星号,换句话说,对于横坐标而言,打印都得从1开始,而我们的坐标成了负值,该怎么办呢?

我们应该转换它:将负数k变成(31-k)它就成了一个合理的正数了,同样的,在270度的左右90之间也是对称的。而270度对应的宽度为46,那么180~270度之间的k对称到270~360度之间的多少呢?设一个方程就搞定了:

46-(31- k)= x - 46
=>
x = 61 + k

于是乎:

#include <stdio.h>
#include <math.h>

int main()
{
    double y;
    int x,k;
    for(y=1;y>=-1;y-=0.1)
    {
        k=asin(y)*10;

        if(1<=k&&k<=15)
        {
            for(x=1;x<k;x++)
                printf(" ");
            printf("*");

            for(;x<30-k;x++)
                printf(" ");
            printf("*\n");
        }
        else if(-15<=k&&k<=-1)
        {
            for(x=1;x<31-k;x++)
                printf(" ");
            printf("*");

            for(x;x<61+k;x++)
                printf(" ");
            printf("*\n");
        }
    }
    return 0;
}

源码

【源码下载,不需要资源积分】

时间: 2024-10-16 18:40:42

控制台绘制正弦/余弦曲线的相关文章

控制台绘制正弦曲线和余弦曲线同时显示

看这一篇时如果不会绘制正弦/余弦曲线可以先看看这一篇哦:控制台绘制正弦/余弦曲线 那么,如果想要同时显示的话,我们可能需要在同一行中绘制出3个或者4个点了.我的思路比较简略,不过算法看上去非常非常不整洁,还望得到大家的帮助-- 我通过Y等于二分之根号二和负二分之根号二以及Y轴将整个图形分成4层,从上往下依次绘制.具体看代码啦-- #include <stdio.h> #include <math.h> int main() { double y; int x,k1,k2; for(

控制台绘制正切曲线

前面介绍了:控制台绘制正弦/余弦曲线 , 控制台绘制正弦曲线和余弦曲线同时显示 下面来看看正切曲线吧,其实也都差不多-- #include <stdio.h> #include <math.h> int main() { double y; int x,k; for(y=10;y>=-10;y--) { k=atan(y)*7; if(k>0) { for(x=-14;x<-k;x++) printf(" "); printf("*&

绘制正弦、余弦曲线

python版本:3.4.3 使用模块:turtle math 代码如下:  #-*- charset:utf-8 -*- import turtle import math #绘制坐标轴,轴心(0,0) #绘制X轴 turtle.color("red") turtle.penup() turtle.goto(-200,0) turtle.pendown() turtle.forward(400) turtle.left(150) turtle.forward(10) turtle.p

nomasp 博客导读:Android、UWP、Algorithm、Lisp(找工作中……

Profile Introduction to Blog 您能看到这篇博客导读是我的荣幸.本博客会持续更新.感谢您的支持.欢迎您的关注与留言.博客有多个专栏,各自是关于 Android应用开发 .Windows App开发 . UWP(通用Windows平台)开发 . SICP习题解 和 Scheme语言学习 . 算法解析 与 LeetCode等题解 .而近期会加入的文章将主要是算法和Android.只是其他内容也会继续完好. About the Author 独立 Windows App 和

基于控制台实现贪吃蛇游戏

1).引言 学习编程,我个人觉得最好的办法就是根据自己的水平不断的给自己设定一个小目标.而这个小目标就是一个有意思的项目,通过完成这个项目,对自己的成果(也包括失败的)进行分析总结,从中提炼出对应的技术并分享出来,不断的往复,如此,为的就是让我们永远保持编写程序的兴趣和热情,完了,还提高我们的技术.而本文就是总结自己的一个小目标(基于控制台实现的贪吃蛇游戏而写的总结) 2).技术实现 大家小时候一定玩过贪吃蛇的游戏.贪吃蛇游戏的控制过程其实也不复杂.简单的可以概括为以下4个部分. 1.1  .组

『python』科学计算专项_科学绘图库matplotlib学习之绘制动画(待续)

示例代码 简单调用绘图 from matplotlib import pyplot as plt import matplotlib.animation as animation import numpy as np def update_point(num): fig_points.set_data(data[:, 0:num]) return fig_points, fig1 = plt.figure() num_point = 50 data = np.random.rand(2, num

(转载)MatLab绘图

转载自:http://www.cnblogs.com/hxsyl/archive/2012/10/10/2718380.html 转载自:http://www.cnblogs.com/jeromeblog/p/3396494.html plot选项: 一 基础功能 二维图形 一. plot函数① 函数格式:plot(x,y)  其中x和y为长度相同                     坐标向量     函数功能:以向量x.y为轴,绘制曲线. [例] 在区间0≤X≤2?内,绘制正弦曲线y=si

20135326、20135303-linux实验三实验报告

北京电子科技学院(BESTI) 实     验    报     告 课程:信息安全系统设计基础实验 班级:1353 姓名:魏昊卿 王亦可  学号:20135303 20135326 成绩:             指导教师:娄嘉鹏          实验日期:2015.11.24 实验密级:         预习程度:        实验时间:15:30-18:00 仪器组次:               必修/选修:必修            实验序号:三 实验名称:            

MATLAB入门笔记

% MATLAB:MATLAB 为 Matrix Laboratory ,用来处理矩阵可编程可实现算法逻辑的计算工具% % eg:1 绘制正弦和余弦曲线x=[0:0.1:4*pi]; %建立角度向量plot(x,sin(x),x,cos(x)) %画图axis([0,2*pi,-1,1]) %设定坐标轴范围title(′正弦和余弦曲线′); %图形名称xlabel(′θ(弧度)′) %x轴名ylabel(′y′) %y轴名legend(′sinθ′,′cosθ′); %图例grid on; %网