问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java画双曲线

发布网友 发布时间:2022-05-10 21:05

我来回答

1个回答

热心网友 时间:2023-10-31 16:54

public class Test3 {
public static void main(String[] args) {
TriFunc tri = new TriFunc();

// 生成一块25×100的画布
Canvas canvas = new Canvas(25, 100);

// 画sin曲线,周期为2
tri.drawSin(canvas, 2.0);
canvas.printCanvas();

System.out.println();
canvas.reset();
// 画cos曲线,周期为2
tri.drawCos(canvas, 2.0);
canvas.printCanvas();
}
}

class TriFunc {

/**
* 画sin曲线
* @param canvas 画布
* @param period 曲线周期
*/
public void drawSin(Canvas canvas, double period) {
char[][] chars = canvas.getCanvas();
// x 轴的比率
double xRatio = (2 * period * Math.PI) / (canvas.getWidth() - 1);
// y 轴的放大倍率
int yMulti = (canvas.getHeight() - 1) / 2;
for(int i = 0; i < canvas.getWidth(); i++) {
// 将数组索引映射为横坐标值
double k = (i - canvas.getWidth() / 2) * xRatio;
// 将sin值映射为数组索引
int h = yMulti - (int)Math.round(Math.sin(k) * yMulti);
chars[h][i] = Canvas.FILL_CHAR;
}
}

/**
* 画cos曲线
* @param canvas 画布
* @param period 曲线周期
*/
public void drawCos(Canvas canvas, double period) {
char[][] chars = canvas.getCanvas();
double xRatio = (2 * period * Math.PI) / (canvas.getWidth() - 1);
int yMulti = (canvas.getHeight() - 1) / 2;
for(int i = 0; i < canvas.getWidth(); i++) {
double k = (i - canvas.getWidth() / 2) * xRatio;
int h = yMulti - (int)Math.round(Math.cos(k) * yMulti);
chars[h][i] = Canvas.FILL_CHAR;
}
}
}

class Canvas {

private int height;
private int width;
private char[][] canvas;

// 填充字符
public static char FILL_CHAR = '#';
// 空白字符
public static char BLANK_CHAR = ' ';

/**
* 构建一块画布
* @param height
* @param width
*/
public Canvas(int height, int width) {
// 由于需要画坐标轴,所以得采用奇数
this.height = height % 2 == 0 ? height + 1 : height;
this.width = width % 2 == 0 ? width + 1 : width;
init();
}

/**
* 初始化画布
*/
private void init() {
this.canvas = new char[height][width];
for(int i = 0; i < height; i++) {
for(int j = 0; j < width; j++) {
canvas[i][j] = BLANK_CHAR;
}
}
addAxis();
}

/**
* 添加坐标轴
*/
private void addAxis() {
// 添加横坐标
int y = height / 2;
for(int x = 0; x < width; x++) {
canvas[y][x] = '-';
}
// 添加纵坐标
int xx = width / 2;
for(int yy = 0; yy < height; yy++) {
canvas[yy][xx] = '|';
}
// 添加原点
canvas[y][xx] = '+';
}

/**
* 输出画布
*/
public void printCanvas() {
for(int i = 0; i < height; i++) {
for(int j = 0; j < width; j++) {
System.out.print(canvas[i][j]);
}
System.out.println();
}
}

/**
* 清空画布
*/
public void reset() {
init();
}

public int getHeight() {
return height;
}
public int getWidth() {
return width;
}

public char[][] getCanvas() {
return canvas;
}
}
来自CSDN 楼主可以去看看。。。。我是蜗牛。。。嘿嘿
http://topic.csdn.net/u/20080701/21/4322819d-d9bc-491b-940b-40fd3095c3c3.html
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
这是个成本会计题,马上要考这道原题了,求大虾帮忙 财务管理类问题,求大虾帮忙,小弟感激不尽。具体问题看问题补充。_百度... 光影魔术手怎么换底色 光影魔术手换底色教程 ...米的绳子围绕一棵树干饶了6圈,还余下1.16米,这棵树干上的直径大约是... ...还余下1.16米,这棵树的树干的直径大约是多少米?求算式! ibm x3500 M5 服务器 运行时风扇声音好大,吵死了,可以下掉一个吗... IBMX3500 M5,最近老是出现自动关机的情况,需要把服务器电源拔掉半分钟... 治疗萎缩性胃炎的方法 怎么治萎缩胃炎 JYF-40FS06电饭煲190块买的是假的吗 html5中使用canvas绘制两点弧线箭头 extJs怎么能画光滑曲线 用canvas画贝塞尔曲线,有没有什么可视化的工具 网页上如何在两个点之间画出平滑的曲线html OPPO59怎么把软件通过微信分享给别人 canvas画出贝塞尔曲线的连线走势动画,有没有什么方案 用html canvas绘制曲线后 能否用x坐标获取y坐标? vs里用canvas画曲线图,在其他浏览器一切正常,而在firefox浏览器里:坐标轴能出现,曲线却出不来 如何利用Tkinter中Canvas绘制曲线图,请教高手 canvas 怎么sin函数绘制波浪线 温州有什么特产,机场有卖的,或者机场都有买什么的 独立站怎么做?哪里学习效果好? redmik30pro自动点击屏幕返回键怎么办? 红米充电屏幕失灵乱跳 红米手机触屏乱跳 涅槃决by半池烟云全本txt在线小说免费阅读 主角修炼太清涅槃诀,好像后来得到了五行乾坤鼎。 涅盘诀电子书txt全集下载 我想买一份个人的全保保险月工资三千要买什么保险好 针对个人情况,买什么类型的保险好? javascript怎么画贝塞尔曲线 国歌数字简谱 《AByteofPython》pdf下载在线阅读,求百度网盘云资源 求国歌简谱 国歌简谱 谁有中国国歌的歌词和简谱??? 安钛克与长城电源哪个好? 国歌的歌词、谱子 长城双卡王500SE跟安钛克VP450P电源哪个好 英国国歌的简谱是什么 电源买安钛克好还是长城好? 请问电脑机箱开机键的线是接在主板上还是接在电源上? 是长城电源好还是安钛克电源好?懂行的回答 组装电脑时,买来的机箱上面的开机和重启按钮怎么与主板连接? 秋刀鱼会过期的爱情意思是什么? 500w电源长城 航嘉 安钛克哪个好 秋刀鱼不会过期是什么意思? 安钛克NeoEco550M和长城智控0噪音700ZN谁值得入手? 电源 安钛克 还是长城好 长城G5和安钛克VP500P哪个好?