> # ♻️ 资源
> **大小:** 1.64MB
> **文档链接:**[**https://www.yuque.com/sxbn/ks/100010824**](https://www.yuque.com/sxbn/ks/100010824)
> **➡️ 资源下载:**[**https://download.csdn.net/download/s1t16/87453185**](https://download.csdn.net/download/s1t16/87453185)
> **注:更多内容可关注微信公众号【神仙别闹】,如当前文章或代码侵犯了您的权益,请私信作者删除!**
> 
# 大作业——MyPlot 函数绘制工具
设置大作业的目的是希望同学们活用课程学到的知识,锻炼解决实际问题的能力,体验团队协作过程,并从过程中学到更多课堂很难涉及的知识。
# 一、任务描述
## 1.1 函数绘制
MyPlot 工具支持的函数绘制功能应包括以下三种:
### 1.1.1 元函数绘制
已知一元函数方程,绘制函数图像。该功能函数的声明为:
```
void plot2D( double (*func)(double), double minX, double maxX,
int color);
```
其中: func 为 C/C++ 语言实现的一元函数方程;
minX 和 maxX 表达定义域取值范围;
color 为颜色值。这里,颜色通过红绿蓝三原色的数值表达,每种颜色占用一个字节(即,取值范围 0-255),拼合成一个 int 整数表达一种颜色。例如,0x0000FF 表示红色,0x00FF00 表示绿色,0xFF0000 表示蓝色,0x00FFFF 表示黄色,0xFF00FF 表示亮紫色,等。
例如:
```
plot2D(func1, -7, 7, 0x00FF00);
```
将使用绿色绘制函数 y = func1(x)、且 x 取值范围[-7, 7]的图像。这时,如果 func1 的定义如下所示,则绘制的图像见任务 2.1。
```
double func1(double x) { return x;}
```
### 1.1.2 参数函数绘制
已知一元参数方程,绘制函数图像。该功能函数的声明为:
```
void plotPara( double (*funcX)(double), double (*funcY)(double), double minT, double maxT, int color);
```
其中: funcX 和 funcY 分别为 C/C++ 语言实现的 X 和 Y 的参数方程; minT 和 maxT 表达参数的取值范围; color 为颜色值。
例如:
```
plotPara(func31, func32, 0, 2 * 3.1416, 0xFF0000);
```
将使用蓝色绘制由 x = func31(t)、y = func32(t)联立形成、且 t 取值范围[0, 2 * 3.1416]时的参数曲线。这时,如果 func31 和 func32 的定义如下所示,则绘制的图像见任务 2.3。
```
double func31(double t) {
return cos(t) * 2 – cos(t * 2);
}
double func32(double t) {
return sin(t) * 2 – sin(t * 2);
}
```
### 1.1.3 元函数绘制
已知二元函数方程,绘制函数图像(三维)。该功能函数的声明为:
```
void plot3D( double (*func)(double, double), double minX, double maxX, double minY, double maxY);
```
其中: func 为 C/C++ 语言实现的二元函数方程; minX 和 maxX 表达自变量 X 的取值范围; minY 和 maxY 表达自变量 Y 的取值范围。
绘制二元函数时,通常不设置颜色值,而是根据函数值的大小设置不同的颜色值。例如:
```
plot3D(func6, -8, 8, -8, 8);
```
将使用绘制 z = func6(x, y)、且 x 取值范围[-8,8]、y 取值范围[-8,8]时的曲面。绘制曲面可以由绘制多个小四边形实现。这时,如果 func6 的定义如下所示,则绘制的图像见任务 2.6。
```
double func6(double x, double y) { double r = sqrt(x * x + y * y); if (r == 0.0) return 1.0; return sin(r) / r;}
```
## 1.2 画布创建
### 1.2.1 创建二维坐标系画布
```
void createCanvas( int width, int height, int origX, int origY, int ratio, bool axis);
```
其中: width 和 height 分别为输出图像的宽和高; origX 和 origY 表达坐标原点在图像中的位置,简化起见,我们规定 X 轴正方向向右,Y 轴正方向向上; ratio 表示坐标单位对应于多少像素; axis 表示是否绘制坐标轴。
例如:
```
createCanvas(800, 600, 400, 300, 10, true);
```
表示创建了一张 800x600 的图像,以其中的(400,300)位置为坐标原点,每 10 个像素为一个单位,而且绘制坐标轴。即,图像的,(410,300)位置对应函数坐标系中的(1,0)点,图像的(400,290)位置对应函数坐标系中的(0,1)点。
### 1.2.2 创建三维坐标系画布
```
void createCanvas3D( int width, int height, int origX, int origY, double rxx, double rxy, double ryx, double ryy, double rzx, double rzy);
```
其中: width 和 height 分别为输出图像的宽和高; origX 和 origY 表达坐标原点在图像中的位置; rxx、rxy、ryx、ryy、rzx、rzy 分别为三维坐标系的坐标对图像 x、y 坐标的变换参数。具体参考下面的公式,可以将三维坐标(X, Y,Z)变换为图像中的坐标(imgX, imgY):
```
imgX = origX + rxx * X + ryx * Y + rzx * Z imgY = origY + rxy * X + ryy * Y + rzy * Z
```
简单起见,三维坐标系画布不绘制坐标轴或坐标平面。例如:
```
void createCanvas(
800, 600, 400, 300,
24.8438, -5.375, -16.175, -5.3, 0, -145);
```
表示创建了一张 800x600 的图像,以其中的(400,300)位置为坐标原点。坐标变换参数可用来得到任务 2.6 所需的效果。
## 1.3 画布保存
```
void saveCanvas(char * filename);
```
其中: filename 表示输出的文件名。
# 二、必做任务
在完成上述功能函数的基础上,通过在主函数中调用这些函数,绘制出下列图像,具体的参数可根据审美自行设定。
## 2.1 直线函数
绘制下面的图形,保存为“1_line.bmp”。

## 2.2 抛物线
绘制下面的图形,保存为“2_parabolic.bmp”。

## 2.3 笛卡尔心形线
绘制下面的图形,保存为“3_heart.bmp”。提示,调用 plotPara 函数实现。

## 2.4 其他心形线
绘制下面的图形,保存为“4_heart.bmp”。提示,可通过多次调用 plot2D 函数实现。

## 2.5 多层心形线
绘制下面的图形,保存为“5_hearts.bmp”。提示,可多次调用 plot2D 和 plotPara 函数实现。

## 2.6 墨西哥草帽
绘制下面的图形,保存为“6_hat.bmp”。提示,调用 plot3D 和实现。


























收起资源包目录




























































共 55 条
- 1
资源评论

- dsndffjfkfm2023-07-12感谢资源主的分享,这个资源对我来说很有用,内容描述详尽,值得借鉴。

神仙别闹
- 粉丝: 4646
- 资源: 7570
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- BS_管家婆安卓POS收银机安装包v16.25.zip
- 本地算力部署DeepSeek详细流程PDF
- 课余活动交流系统部分代码
- 单片机开发,基于51单片机的智能工厂火灾检测预警系统.zip
- 计算机毕业设计源码:ssm剧本杀预约系统.zip
- 单片机开发,基于51单片机的自动浇水器设计.zip
- 汇编语言实现While循环代码
- ai小智语音助手windows版本
- java安装及基础知识PDF
- flowable 6.8 适配人大金仓 达梦
- 基于ThinkPHP与Redis的排队叫号系统的构建与实现
- 蓝桥杯中的随机化数组题目类型
- DeepSeek实用技巧大全:99%用户不知的进阶使用方法提升工作效率
- AllSamples.mat
- (源码)基于Arduino IDE的STM32Duino项目.zip
- C++实现随机选择算法代码
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
