函数图像生成器 (吉林大学 孙立鑫)

这篇具有很好参考价值的文章主要介绍了函数图像生成器 (吉林大学 孙立鑫)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

函数图像生成器
1.直角坐标系
2.极坐标系
3.参数方程
a.角度(圆锥曲线)
b.距离(直线)


  在学习编程过程中,我们可能会遇见十分复杂的函数,因此我们需要强大的工具来辅助分析。这篇文章我们来深入讨论如何生成各种函数以及曲线方程的图像。

  为了清晰简洁,我们采用头文件与源文件相结合的方式编译。

  且三类图像生成器,使用同一个头文件辅助生成图像。

  头文件:

#ifndef _SLX_H_
#define _SLX_H_
#include<stdio.h>
#include<math.h>
#include<graphics.h>
#include<stdlib.h>
extern double p;//引用源文件中的外部变量(放大倍数)
/*说明 我们需要将原函数等比例放缩呈现在电脑频幕上,经测试 50是一个适中的放缩倍数*/
void xian(void)
{
	/*平面直角坐标系*/
	line(500, 0, 500, 1000);//纵轴
	line(0, 500, 1000, 500);//横轴
	line(500, 0, 480, 20);//纵轴箭头
	line(500, 0, 520, 20);
	line(1000, 500, 980, 480);//横轴箭头
	line(1000, 500, 980, 520);
	outtextxy(970, 520, 'x');
	outtextxy(470, 20, 'y');
	int i = -100;
	double j;//中间变量
	/*以下代码用于显示数轴数字*/
	for (; i <= 100; i++)
	{
		 j = i * p;
		 char a[10];
		 sprintf_s(a, "%d", i);
		line(j + 500, 500, j + 500, 490);
		if (i == 0)
		{
			;
		}
		else
		{
			outtextxy(j + 500, 510, a);
		}
	}
	i = -100;
	for (; i <= 100; i++)
	{
		double j = i * p;
		char b[10];
		sprintf_s(b, "%d", i);
		line(500,500-j,510,500-j);
		if (i == 0)
		{
			;
		}
		else
		{
			outtextxy(510, 500 - j, b);
		}
	}
}
#endif

 1.直角坐标系

  以下操作均在直角坐标系下进行

  

#include<stdio.h>
#include<math.h>
#include<graphics.h>//画图函数头文件
#include<stdlib.h>
#include"slx.h"//自己的头文件
double p = 50;//图像放大倍数(50为宜)
int main(void)
{ 
	initgraph(1000, 1000);//画图窗口
	setcolor(GREEN);//线颜色
	xian();//显示平面直角坐标系
	double x, y;//正常坐标系下 x y
	double m, n;//定义域
	double a, b;//放大后的x y
	printf("请输入定义域的左右端点值:\n");
	scanf_s("%lf %lf", &m, &n);
	m = m * p;//定义域扩大
	n = n * p;
	if (m >= n)//防止错误输入
	{
		printf("ERROR");
		return 0;
	}
	float i = m;
	float e =exp(-6);//移位变量
	for (; i <= n; i=i+e)
	{
		x = i;
		a = x;//存贮x的值
		x = x / p;//放缩
		y =(exp(x)-exp(-x))/2; //函数 以双曲正弦为例
		b = y * p;//放缩
		setlinestyle(PS_SOLID,3);//设置画线样式 实线 宽度为三个像素
		line(500 + a, 500 - b, 500 + a, 500 - b);//化线打点
	}
	system("pause");
	closegraph();
	return 0;
}

若定义域出现错误,会出现如下结果。

函数图像生成器 (吉林大学 孙立鑫)

 若正确 以[-10,10] 为例

会正确显示函数图像,以下是双曲正弦图像,函数可以在代码中修改,我们输入定义域端点值。

f(x)=(exp(x)-exp(-x))/2 定义域[-10,10]

函数图像生成器 (吉林大学 孙立鑫)

 f(x)=(0.64 * sqrt(fabs(x)) - 0.8 + pow(1.2,fabs(x)) * cos(200 * x)) * sqrt(cos(x))

 定义域[-pi/2,pi/2]

函数图像生成器 (吉林大学 孙立鑫)

 2.极坐标系

我们更改头文件

#ifndef _SLX_H_
#define _SLX_H_
#include<stdio.h>
#include<math.h>
#include<graphics.h>
#include<stdlib.h>
extern double p;
void xian(void)
{
	/*极坐标系*/
	line(500, 500, 1000, 500);//横轴
	line(1000, 500, 980, 480);//横轴箭头
	line(1000, 500, 980, 520);
	outtextxy(970, 520, 'x');
	int i =0;
	double j;//中间变量
	/*以下代码用于显示数轴数字*/
	for (; i <= 100; i++)
	{
		 j = i * p;
		 char a[10];
		 sprintf_s(a, "%d", i);
		line(j + 500, 500, j + 500, 490);
			outtextxy(j + 500, 510, a);
	}
}
#endif

源文件

#include<stdio.h>
#include<math.h>
#include<graphics.h>//画图函数头文件
#include<stdlib.h>
#include"slx.h"//自己的头文件
double p = 50;//图像放大倍数(50为宜)
int main(void)
{
	initgraph(1000, 1000);//画图窗口
	setcolor(GREEN);//线颜色
	xian();//显示平面直角坐标系
	double rou, xite;
	double x, y;
	double k;
	printf("请输入[0,k*pi]中的k\n");
	scanf_s("%lf", &k);
	double m=0, n=k*3.1415926;
	float i = m;
	float e = exp(-6);//移位变量
	for (; i <= n; i = i + e)
	{
		xite = i;
		rou =0.1*xite;  //极坐标方程
		rou = rou * p;
		x = rou * cos(xite);
		y = rou * sin(xite);
		setlinestyle(PS_SOLID, 3);//设置画线样式 实线 宽度为三个像素
		line(500 + x, 500 - y, 500 + x, 500 - y);//化线打点
	}
	system("pause");
	closegraph();
	return 0;
}

 以螺旋线为例(函数可在代码中更改)

我们输入k为30

图像如下

函数图像生成器 (吉林大学 孙立鑫)

 3.参数方程(直角坐标系下)

我们改回原来的头文件

#ifndef _SLX_H_
#define _SLX_H_
#include<stdio.h>
#include<math.h>
#include<graphics.h>
#include<stdlib.h>
extern double p;
void xian(void)
{
	line(500, 0, 500, 1000);//平面直角坐标系
	line(0, 500, 1000, 500);
	line(500, 0, 480, 20);
	line(500, 0, 520, 20);
	line(1000, 500, 980, 480);
	line(1000, 500, 980, 520);
	outtextxy(480, 520, 'o');
	outtextxy(970, 520, 'x');
	outtextxy(470, 20, 'y');
	int i = -100;
	double j;
	for (; i <= 100; i++)
	{
		 j = i * p;
		 char a[10];
		 sprintf_s(a, "%d", i);
		line(j + 500, 500, j + 500, 490);
		if (i == 0)
		{
			;
		}
		else
		{
			outtextxy(j + 500, 510, a);
		}
	}
	i = -100;
	for (; i <= 100; i++)
	{
		double j = i * p;
		char b[10];
		sprintf_s(b, "%d", i);
		line(500,500-j,510,500-j);
		if (i == 0)
		{
			;
		}
		else
		{
			outtextxy(510, 500 - j, b);
		}
	}
}
#endif

a.角度

#include<stdio.h>
#include<math.h>
#include<graphics.h>//画图函数头文件
#include<stdlib.h>
#include"slx.h"//自己的头文件
double p = 50;//图像放大倍数(50为宜)
int main(void)
{
	initgraph(1000, 1000);//画图窗口
	setcolor(GREEN);//线颜色
	xian();//显示平面直角坐标系
	double x, y;
	double xite;
	double k;
	printf("请输入[0,k*pi]中的k\n");
	scanf_s("%lf", &k);
	double m = 0, n = k * 3.1415926;
	float i = m;
	float e = exp(-6);//移位变量
	for (; i <= n; i = i + e)
	{
		xite = i;
		x = 4*cos(xite);//参数方程
		y = 3*sin(xite);
		x = x * p;
		y = y * p;
		setlinestyle(PS_SOLID, 3);//设置画线样式 实线 宽度为三个像素
		line(500 + x, 500 - y, 500 + x, 500 - y);//化线打点
	}
	system("pause");
	closegraph();
	return 0;
}

以椭圆x*x/16+y*y/9=1为例

输入2 图形如下

函数图像生成器 (吉林大学 孙立鑫)

 函数可在代码中更改

b.距离 t

#include<stdio.h>
#include<math.h>
#include<graphics.h>//画图函数头文件
#include<stdlib.h>
#include"slx.h"//自己的头文件
double p = 50;//图像放大倍数(50为宜)
int main(void)
{
	initgraph(1000, 1000);//画图窗口
	setcolor(GREEN);//线颜色
	xian();//显示平面直角坐标系
	double x, y;
	double x1, y1;
	double xite;
	printf("请输入线过点以及偏转角k*pi中的k以及定义域的左右端点:\n");
	scanf_s("%lf %lf", &x1, &y1);
	scanf_s("%lf", &xite);
	double t;
	double m , n ;
	scanf_s("%lf %lf", &m, &n);
	float i = m;
	float e = exp(-6);//移位变量
	for (; i <= n; i = i + e)
	{
		t = i;
		x = x1+t*cos(xite*3.1415926);
		y = y1 + t*sin(xite*3.1415926);
		x = x * p;
		y = y * p;
		setlinestyle(PS_SOLID, 3);//设置画线样式 实线 宽度为三个像素
		line(500 + x, 500 - y, 500 + x, 500 - y);//化线打点
	}
	system("pause");
	closegraph();
	return 0;
}

例如 输入 2 1 0.25 -100 100

显示如下

函数图像生成器 (吉林大学 孙立鑫)

   总结:以上就是函数图像生成器的简述,读者可以自由更改代码中的数据来达到自己的需求,希望以上的内容对你的生活和学习有所帮助。

 文章来源地址https://www.toymoban.com/news/detail-455657.html

到了这里,关于函数图像生成器 (吉林大学 孙立鑫)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 吉林大学 计算机网络常见的名词解释

    API (Application Programming Interface)应用程序编程接口 HTTP (Hyper Text Transfer Protocol) 超文本传输协议 CDN (Content Delivery Network)内容分发网络 SMTP (Simple Mail Transfer Protocol)即简单邮件传输协议 POP3 (Post Office Protocol),即第三版的邮局协议,用于电子邮件的接收。本协议主要用

    2024年02月05日
    浏览(50)
  • 2022级吉林大学面向对象第三次上机测试

    运算符重载、动态内存管理 1.已知字符串类MyString的定义为: 全局函数: const MyString operator + (const MyString ,const MyString );//字符串连接 ostream operator(ostream os, const MyString str); //定向输出 请完整实现MyString类和指定的全局函数。(可以使用new,delete运算以及strcpy,strlen,…等库函数

    2024年02月06日
    浏览(54)
  • 每章一篇博客带你拿下吉林大学JAVAEE期末(一)

    1)JDBC(Java Database Connectivity) 是一种用于执行SQL语句的JavaAPI,可为访问不同的关系型数据库提供一种统一的途径。 2) JNDI(Java Name and Directory Interface,Java 命名和目录接口) 被用于执行名字和目录服务。它提供了一致的模型来存取和操作企业级的资源,如DNS,LDAP,本地文件系统或应

    2024年02月12日
    浏览(39)
  • 每章一篇博客带你拿下吉林大学JAVAEE期末(七:会话Bean)

    1) 无状态 会话Bean 无状态会话Bean 不维持 和客户端的 会话状态 。 当方法结束的时候,客户端特定的状态就不会被保持。 允许EJB容器将一个实例分配给任意一个客户端。 2) 有状态 会话Bean 有状态会话Bean是一种保持会话状态的服务,每个实例都与特定的客户端相关联,在与

    2024年02月13日
    浏览(72)
  • [保研/考研机试] KY180 堆栈的使用 吉林大学复试上机题 C++实现

    堆栈的使用_牛客题霸_牛客网     堆栈是一种基本的数据结构。堆栈具有两种基本操作方式,push 和 pop。其中 push一个值会将其压入栈顶,而 pop 则会将栈顶的值弹出。现在我们就来验证一下堆栈的使用。 输入描述:     对于每组测试数据,第一行是一个正整数 n(0 n = 1

    2024年02月13日
    浏览(127)
  • Generator生成器函数

    运行结果: ok,投入实践

    2024年02月21日
    浏览(59)
  • 【ES】笔记-生成器函数与调用

    function* 这种声明方式 (function后跟一个星号)会定义一个生成器函数 (generator function),它返回一个 Generator 对象。 如何调用呢?先看下里面的内容 返回一个这个生成器的 迭代器 ( iterator )对象。 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/function* 语法

    2024年02月10日
    浏览(39)
  • python中函数,装饰器,迭代器,生成器

    1.函数可以作为参数进行传递 2.函数可以作为返回值进行返回 3.函数名称可以当成变量一样进行赋值操作 作用:在不改变原有函数调用的情况下,给函数增加新的功能          即可以在函数前面增加新的功能,但不改变原来的代码 可迭代的数据类型都会提供迭代器,即可以

    2024年02月07日
    浏览(44)
  • JavaScript 生成器函数详解:优雅处理异步任务流

    目录 1. 生成器函数的定义和使用 2. 暂停和恢复执行 3. 与其他语言特性的配合使用 Iterator Protocol 迭代器协议  解构赋值  生成器和 Promise 的组合使用          使用 Promise:         使用 async/await: 委托给另外一个Generator函数         Generators 是 JavaScript 中的一种

    2024年02月12日
    浏览(55)
  • 从文本创建艺术,AI图像生成器的数据集是如何构建的

    AIGC系列分享是整数智能推出的一个全新分享系列,在这个系列中,我们将介绍与AIGC概念相关的有趣内容。AIGC系列主要分为以下几篇文章: 被称为下一代风口的AIGC到底是什么? AIGC的数据集构建方案分享系列 从文本创建艺术,AI图像生成器的数据集是如何构建的 ChatGPT的数据

    2024年02月11日
    浏览(75)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包