文档章节

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

NoMasp
 NoMasp
发布于 2015/09/08 21:46
字数 691
阅读 8
收藏 0

余弦曲线

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

正弦曲线的特点是左右对称,且左边部分的纵坐标是从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;
}

这里写图片描述

源码

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

还有下一篇哦:控制台绘制正弦曲线和余弦曲线同时显示



为使本文得到斧正和提问,转载请注明出处:
http://blog.csdn.net/nomasp

版权声明:本文为 NoMasp柯于旺 原创文章,未经许可严禁转载!欢迎访问我的博客:http://blog.csdn.net/nomasp

本文转载自:http://blog.csdn.net/nomasp/article/details/45387247

NoMasp
粉丝 7
博文 334
码字总数 0
作品 0
镇江
程序员
私信 提问
Delphi实现正弦曲线的绘制

在Delphi中没有直接正弦曲线的函数。但是在科学研究中,正弦曲线的应用是非常广泛的,本实例介绍如何绘制正弦曲线。 本实例要在窗体上直接绘制正弦曲线,为了防止窗口切换的过程中会输出不完...

isolated
2011/05/14
58
0
Android自定义View——实现水波纹效果类似剩余流量球

最近突然手痒就想搞个贝塞尔曲线做个水波纹效果玩玩,终于功夫不负有心人最后实现了想要的效果,一起来看下吧: 效果图镇楼 一:先一步一步来分解一下实现的过程 需要绘制一个正弦曲线(sin)...

a_zhon
2017/09/04
0
0
一个灵活的,可配置的波浪动画插件

先看效果 效果展示 github 起因 春节放假前的第二天上午,看到设计稿上的图(如下),于是发生了下面的对话 -我:把这个图传一下吧。 -UI:好的,你是要 gif 吧。 -我:啥?这个是个动画? ...

demonQ
02/15
0
0
玩转双核CPU:左手画圆,右手画方

两年前,微软亚洲研究院出版了《编程之美》一书,其中的第一章第一节“让CPU占用率曲线听你指挥”一文,可谓是在全国范围内掀起了一股玩转CPU占用率曲线热。我本人甚至在坐公交的时候都在思考...

技术小阿哥
2017/11/27
0
0
ABAP开发基础知识:8)数值运算及算术运算函数

程序中缺少不了数据运算,以下介绍ABAP所支持的运算符。 (1)算术运算符 算术运算符有 +(加)、-(减)、(乘)、/(除)、DIV(整除)、MOD(取余)、*(乘方)。 运算符的基本格式为: ...

ken_ngai
2012/03/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

skywalking(容器部署)

skywalking(容器部署) 标签(空格分隔): APM [toc] 1. Elasticsearch SkywalkingElasticsearch 5.X(部分功能报错、拓扑图不显示) Skywalking需要Elasticsearch 6.X docker network create......

JUKE
6分钟前
1
0
解决Unable to find a single main class from the following candidates [xxx,xxx]

一、问题描述 1.1 开发环境配置 pom.xml <plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><!--一定要对上springboot版本号,因......

TeddyIH
7分钟前
0
0
Dubbo服务限制大数据传输抛Data length too large: 13055248, max payload: 8388608解决方案

当dubbo服务提供者向消费层传输大数据容量数据时,会受到Dubbo的限制,报类似如下异常: 2019-08-23 11:04:31.711 [ DubboServerHandler-XX.XX.XX.XXX:20880-thread-87] - [ ERROR ] [com.al...

huangkejie
10分钟前
0
0
HashMap和ConcurrentHashMap的区别

为了线程安全,ConcurrentHashMap 引入了一个 “分段锁” 的概念。具体可以理解把一个大的 map 拆分成 N 个小的 Map 。最后再根据 key.hashcode( )来决定放到哪一个 hashmap 中去。 hashmap ...

Garphy
10分钟前
0
0
购买SSL证书需要注意哪些问题

为了保障网站的基本安全,为网站部署SSL证书,已经是一种常态了。各大浏览器对于安装了SSL证书的网站会更友好,并且不会发出“不安全”的提示。部署SSL证书之前首先得去给网站购买一个SSL证书...

安信证书
40分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部