1.问题描述

在屏幕上画出余弦函数cos(x)曲线,如图1.6所示。

2.问题分析

连续的曲线是由点组成的,点与点之间距离比较近,看上去就是曲线了,画图的关键是画出每个点。Java提供了三角函数方法,直接调用cos()方法就可以根据x坐标计算出y坐标。需要注意的是,cos()方法输入的参数是弧度值,要进行坐标转换,同样,得到的结果也要进行转换处理。从图1.6中可以看出,这条余弦曲线有两个周期,我们可以把x坐标控制在0~720。

(1)确定程序框架

从图1.6中,我们可以发现,整个图形包括x轴、y轴及余弦曲线。控制台不方便输出图形,这里以Applet形式输出。这样我们就可以写出程序框架了,代码如下:

public class Cos1 extends  Applet
{int x,y;public void start()            //当一个Applet被系统调用时,系统会自动调用                                      start()方法{Graphics g=getGraphics();  //画画之前,必须先取得画笔//画x轴//画y轴//画cos(x)曲线}
}

(2)画x轴

为了画出图1.6所示效果,我们可以把坐标原点设定为(360,200),x轴就是从左到右的很多点组成,通过循环语句很容易实现,代码如下:

for(x=0;x<=750;x+=1)
{g.drawString("·",x,200);         //画x轴
}

细心的读者会发现,x轴上还有个箭头,这个是如何实现的呢,其实很简单,是由两条线段交汇而成。为方便起见,两条线段都与x轴成45°角,很容易得到表达式的方程:y=x–550,y=950–x。代码如下:

for(x=740;x<=750;x+=1)
{g.drawString("·",x,x-550);   //x轴上方斜线g.drawString("·",x,950-x);    //x轴下方斜线
}

(3)画y轴

参考上面x轴的绘制,很容易画出y轴,代码如下:

//y轴
for(y=0;x<=385;y+=1)
{g.drawString("·",360,y);     //画y轴
}
//y轴箭头
for(x=360;x<=370;x+=1)
{g.drawString("·",x-10,375-x);g.drawString("·",x,x-355);
}

(4)画cox(x)曲线

图形的主体是cox(x)曲线,从图1.6中可以看出,这条余弦曲线有两个周期,我们可以把x坐标控制在0~720。cox(x)返回的结果小于1,为了看到图1.6效果,必须进行放大处理,这里放大了80倍,同时把图形向下平移了200个像素。代码如下:

//两个周期,即4Л
for(x=0;x<=720;x+=1)
{a=Math.cos(x*Math. PI/180);y=(int)(200+80*a);           //放大80倍并向下平移200个像素g.drawString("·",x,y);

(5)完整程序

现在我们就需要把刚才的程序进行组合,构成我们的完整程序:

import java.applet.*;
import java.awt.*;public class Cos1  extends Applet
{int x,y;public void start() {//画画之前,必须先取得画笔Graphics g=getGraphics();//画x轴、y轴for(x=0;x<=750;x+=1){g.drawString("·",x,200);if(x<=385) g.drawString("·",360,x);}g.drawString("Y",330,20);//画y轴箭头for(x=360;x<=370;x+=1){g.drawString("·",x-10,375-x);g.drawString("·",x,x-355);}//画x轴箭头g.drawString("X",735,230);for(x=740;x<=750;x+=1){g.drawString("·",x,x-550);g.drawString("·",x,950-x);}//画cox()曲线for(x=0;x<=720;x+=1){double a=Math.cos(x*Math. PI/180+Math.PI);y=(int)(200+80*a);               //放大80倍并向下平移200个像素g.drawString("·",x,y);}}
}

【编程】余 弦 曲 线相关推荐

  1. PHP编程第八期线上培训班课程

    教程介绍 PHP编程第八期线上培训班课程涵盖PHP及其周边主要技术,web网站建设,微信小程序开发等可以轻松应对!汇总出最实用的PHP技术,学完之后,可以快速融入企业开发环境中.适合没有Web开发基础 ...

  2. 弦截法c语言求方程XeX-1=0的解,编程用弦截法求方程 f(x)=3x^3-5x^2+16x-60=0的根

    满意答案 w6297281 2013.08.26 采纳率:52%    等级:12 已帮助:8785人 希望下面的资料对你有帮助: 弦截法求方程的根是一种解方程得基本方法,在计算机编程中常用.他的思路 ...

  3. python编程培训多少钱-线下python培训要多少钱?

    Python语言相对简单,对于初学者非常友好,可以让初学者专注于编程逻辑,而不会被晦涩的语法细节困扰.相较于其他编程语言来说,学习python拥有更多岗位发展选择.那么,线下python培训要多少钱? ...

  4. CSDN挑战编程——《金色十月线上编程比赛第二题:解密》

    金色十月线上编程比赛第二题:解密 题目详情: 小强是一名学生, 同时他也是一个黑客. 考试结束后不久,他惊讶的发现自己的高等数学科目居然挂了,于是他果断入侵了学校教务部网站.在入侵的过程中,他发现了与 ...

  5. CSDN挑战编程——《金色十月线上编程比赛第一题:小女孩数数》

    金色十月线上编程比赛第一题:小女孩数数 题目详情: [金色十月线上编程比赛规则] 一个小女孩正在用左手手指数数,从1数到n.她从拇指算作1开始数起,然后,食指为2,中指为3,无名指为4,小指为5.接下 ...

  6. 山大青岛计算机学院郑雯,山东大学自招700余人过线 面试将刷掉20%考生

    前天下午5点至昨天凌晨,"北约""华约""卓越"准时开通了自主招生成绩查询入口,发布了2014年自主招生笔试结果.首次将省内外考生同时纳入& ...

  7. 二手车数据分析-爬取人人车二十余万条线上二手车数据

    我国汽车保有量近年来持续高速增长,二手车交易也正蓬勃发展,涌现出瓜子.优信.人人车,等大量二手车交易网站. 这次就通过在线抓取人人车发布的线上二手车数据,对目前二手车的交易情况进行分析. 使用工具: ...

  8. C 语言编程 — 线程安全与线程非安全

    目录 文章目录 目录 线程安全与线程非安全 C 语言的线程非安全函数(不可重入函数) Linux 的共享内存 线程安全与线程非安全 多线程程序中,线程安全是必须要考虑的因素. 线程安全(Thread ...

  9. 机械原理c语言程序,c语言机械原理编程,连杆运动分析图线.docx

    编程大作业 基于 C 语言的机械原理分析图: 只有库函数包含头文件:graphics.h conio.h 才能观看该程序效果: 若已经安装 VC++,可以打开文件夹里面的 EasyX压缩包, 并安装 ...

最新文章

  1. Trends Genet | 王关红和Jackson Champer综述共生菌和基因驱动技术防控蚊媒疾病
  2. f2 柱状图滚动 钉钉小程序_钉钉小程序图表库AntV - F2 使用总结
  3. 秋招面经来了,收藏!
  4. Spark在集群中的安装
  5. JavaScript 函数声明,函数表达式,匿名函数,立即执行函数之区别
  6. SAP系统中发送消息的几种办法
  7. 构建之法 阅读笔记01
  8. nginx mysql设置远程连接超时_nginx中的超时设置
  9. java模拟Digest.认证
  10. 刘歧:让人生不留遗憾
  11. Android WebView https白屏、Http和Https混合问题、证书配置和使用
  12. python中的OrderedDict
  13. excel如何把顺序倒过来_如何在筛选后的表里复制粘贴数据到同行
  14. Java面试题视频讲解汇总,持续更新中...
  15. 品质管控计划ppt怎样写_供应商质量管理工作计划.ppt
  16. 虚拟机自省XenAccess和vmitools
  17. 短线起爆点(移动均线15种战法)
  18. SDHC卡写单块和读单块
  19. PyMOL免费下载及安装教程【Win版】
  20. MySQL版本号后面包含“-log”代表什么意思?

热门文章

  1. Oracle 性能优化之AWR、ASH和ADDM(含报告生成和参数解读)
  2. JAVA和C语言有啥区别?是选择学习JAVA还是C?
  3. 程序员常用DOS命令
  4. [nginx]解决无root权限运行mginx问题
  5. 《谁说菜鸟不会数据分析》学习笔记 第五章数据分析
  6. 白平衡,颜色校正,颜色映射When Color Constancy Goes Wrong, brown
  7. 【效果展示】面部追踪+情绪识别
  8. java dispose null_java – 为什么在调用setVisible(false)和dispose...
  9. JavaScript正则表达式 RegExp验证手机号码
  10. 高考16个突发事件处理方法大全,一定会需要!