vs2019画樱花树

2023-11-05 20:30
文章标签 vs2019 樱花树

本文主要是介绍vs2019画樱花树,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

樱花树
在这里插入图片描述

#include <easyx.h>
#include <conio.h>
#include <vector>
#include <ctime>
#include <cstdlib>
#include <cmath>
#include <iostream>#define SEE(x) cout << #x << ":" << x << endl;
#define RED (RGB(240, 128, 128))
#define WHITE (RGB(255, 255, 255))
#define BROWN (RGB(160, 82, 45))// 与主干角度的偏移角度
const int angle_min = 18;
const int angle_max = 28;
// 长度
const int length_min = 60;
const int length_max = 90;
// 宽度
const int thick = 10;// 绘制区大小
int width = 800, height = 600;using namespace std;typedef pair<int, int> Point;// 绘制一条线
void drawline(Point st, Point ed) {line(st.first, st.second, ed.first, ed.second);
}// 产生范围内的随机数
int rand_range(int st, int ed) {return st + rand() % (ed - st);
}// 给点原点 相对于水平的角度 长度 返回处理后的节点
Point getPointFromAngle(Point src, float angle, int length) {angle = 3.14 / 180.0 * angle;return { src.first + length * cos(angle), src.second - length * sin(angle) };
}// 递归画叉
void draw_bifurcation(Point p, float angle, int layer) {// 结束层if (layer == 13) {return;}srand(time(NULL));// 偏移角float delta = rand_range(angle_min, angle_max);// 收缩 使用根号float shrink = pow(layer, 0.5);// 便宜的角度越来越小float left_angle = angle + delta / shrink;// 右分支的角度确定float right_angle = left_angle - 2.4 * delta / shrink;// 随机长度int length_left = rand_range(length_min / shrink, length_max / shrink);int length_right = rand_range(length_min / shrink, length_max / shrink);// 获取下一个分支点Point left = getPointFromAngle(p, left_angle, length_left);Point right = getPointFromAngle(p, right_angle, length_right);// 末端绘制红白相间的花瓣int type = rand() % 2;if (layer > 8) {if (type == 0) {setlinecolor(RED);}else {setlinecolor(WHITE);}}else {setlinecolor(BROWN);}// 设置厚度setlinestyle(PS_SOLID, thick / layer);drawline(p, left);// 递归左分支draw_bifurcation(left, left_angle, layer + 1);setlinestyle(PS_SOLID, thick / layer);if (layer > 8) {if (type == 0) {setlinecolor(WHITE);}else {setlinecolor(RED);}}else {setlinecolor(BROWN);}// 动态效果Sleep(1);drawline(p, right);// 递归右分支draw_bifurcation(right, right_angle, layer + 1);
}// 随机绘制地面的花瓣
void draw_ground() {int left = width * 0;int right = width * 1;int up = height - 60;int down = height;int length = 4;setlinecolor(RED);setlinestyle(PS_SOLID, 3);int x, y, angle;for (int i = 0; i < 300; i++) {x = rand_range(left, right);y = rand_range(up, down);angle = rand_range(0, 360);Point ed = getPointFromAngle({ x, y }, angle, length);Sleep(5);drawline({ x, y }, ed);}
}int main() {initgraph(width, height);// 设置背景色setbkcolor(RGB(241, 215, 118));cleardevice();// 绘制主干setlinecolor(BROWN);setlinestyle(PS_SOLID | PS_ENDCAP_SQUARE, 10);line(width / 2, height - 110, width / 2, height - 20);// 递归绘制draw_bifurcation({ width / 2, height - 110 }, 90.0, 1);// 绘制掉落花瓣的地面draw_ground();_getch();closegraph();return 0;
}

这篇关于vs2019画樱花树的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/352298

相关文章

【vs2019】问题处理记录,持续更新

【vs2019 】记录一下使用过程中碰到的问题和处理方法 Q:还原 NuGet 程序包时出错: 对路径***的访问被拒绝。 Q:还原 NuGet 程序包时出错: 对路径***的访问被拒绝。 A:本人win10系统,查找发现对应路径下文件夹不存在,考虑很可能跟目录权限有关导致不能生成,然后用管理员权限重新打开vs后成功还原NuGet程序包 **前因:**用Xamarin建了个And

VS配置QGIS二次开发(VS2019+QT5+QGIS3.14)

1.1 QGIS软件下载 QGIS软件是基于QT5开发的GIS系统,其易用性及其高效性使其已经成为当下极具竞争力的GIS系统,其占有率足以与Esri的ArcGIS等主流GIS软件分庭抗礼。QGIS软件因其开源特性也使得其广受广大GIS开发者的青睐。 在本次《地理信息系统设计与开发》的第一次课程作业中,笔者将就如何下载使用QGIS软件进行详细的介绍说明。 Step1:首先,我们需要使用搜索引擎

vs2019编译opencv+contribute+gpu

1、提前准备 vs2019、opencv4.4.0、opencv-contribute4.4.0、CUDA Toolkit 11.8(不能高于自己电脑的CUDA版本)、CUDNN8.9.6 ps:先提前准备环境 1)cmd中查看:nvidia-smi查看自己的显卡信息,不存在下述信息的话则需先安装英伟达显卡驱动程序。 从下图可知,本机显卡驱动支持的cuda最高版本为12.2,那么只需要安装

vs2019连接docker mssql

默认端口1433无法使用 待更docker run mssql 非默认端口号(1433在端口禁用范围)vs2019连接时 逗号间隔输入端口即可连接 待更 docker run mssql 非默认端口号(1433在端口禁用范围) vs2019连接时 逗号间隔输入端口 即可连接

VS2019开发CAN上位机

1、CAN分析仪,主要功能就是把CAN信号转换成电脑能接收的USB信号。索引号是指电脑连接了几台CAN分析仪设备,一般情况下都是一台,该值为0。不同CAN盒的二次开发文件不同 2、CAN上位机一般只能适应一个CAN盒,如果需要实现多个CAN盒通信,那么需要加入多个CAN盒驱动 3、一般选择在别人提供的CAN程序上进行二次开发,例如周立功,广成等等 4、以周立功为例  : 函数/例程下载 (z

学习记录:VS2019+OpenCV3.4.1实现SURF库函数的调用

最近在学习opencv的使用,在参照书籍《OpenCV3编程入门》实现SURF时遇到不少问题,下面做归纳总结。 错误 LNK2019 无法解析的外部符号 “public: static struct cv::Ptr __cdecl cv::xfeatures2d::SURF::create(double,int,int,bool,bool)” (?create@SURF@xfeatures2d@c

使用VS2019编译V8引擎 (windows x64)

使用VS2019编译谷歌的V8js引擎 - winX64 前言1. 准备工作1.1 设置代理1.2 下载谷歌代码管理工具1.3 提取v8代码及依赖1.4 安装python2.7 2. 编译V82.1 vs2019编译2.1.1 vs2019编译方法12.1.2 vs2019编译方法2 2.2 v8gen编译 3. 谢天谢地编译成功参考 前言         最近需要用到一个脚本引

vs2019 c++20规范 全局函数 ref 及模板类 reference_wrapper<_Ty> 的源码分析

这是个引用,可以包裹一个对象,相当于引用该对象,而不是在作为函数形参时产生值传递。因为模板 reference_wrapper<_Ty> 其实是封装了该对象的地址。下面以图示形式给出其重要的成员函数。模板其实都差不多,跟人也一样,但随着成员数据和成员函数的不同,导致模板的功能差异很大。如同人的隔行如隔山。 谢谢

VS2019专业版 C#和MFC安装

1. VS2019专业版下载地址 https://learn.microsoft.com/en-us/visualstudio/releases/2019/history 2.安装 C# 部分 MFC部分

VS2019创建c++动态链接库dll与调用方法

VS2019创建c++动态链接库dll与调用方法 1.点击文件-》新建-》项目,输入dll,选择具有导出项的(DLL)动态链接库 2.输入一个文件名:dll2 头文件.h 3.添加加减法函数: // 下列 ifdef 块是创建使从 DLL 导出更简单的// 宏的标准方法。此 DLL 中的所有文件都是用命令行上定义的 DLL2_EXPORTS// 符号编译的。在使用此 DL