首先

在开始之前,先说一下:如何在Viual Studio (我用的2019)中C++项目中安装OpenGl插件

点击安装即可,全程配置不到20s

使用c++ OpenGL,完成Konx 雪花绘图

#include

#include

#include

#define N 3//递归次数

#define C 0.017453//计算cosX角度的一个系数而已

typedef float point[2];

point vertex[3] = { {-0.5,-0.43},{0.5,-0.43},{0,0.43} };//分别是左、右、上

float theta = 0;//初始角度

void draw_line(point p1, point p2)

{

glBegin(GL_LINES);

glVertex2fv(p1);

glVertex2fv(p2);

glEnd();

}

//递归,一分为三,并且确定三点坐标

void divide_line(point firstPoint, point secondPoint, int n, float theta)//theta就是数学角度那个希腊字母ceiTa

{

if (n > 0)

{

point p[3];//声明 新冒出来的三角形的三个点

float length_X, length_Y, length;

length_X = secondPoint[0] - firstPoint[0];//

length_Y = secondPoint[1] - firstPoint[1];

length = sqrt(length_X * length_X + length_Y * length_Y) / 3;//每次迭代更新三角形边长(因为越来越小嘛)

//确定新三角形的两个底面顶点坐标

p[0][0] = firstPoint[0] + length_X / 3;

p[0][1] = firstPoint[1] + length_Y / 3;

p[2][0] = secondPoint[0] - length_X / 3;

p[2][1] = secondPoint[1] - length_Y / 3;

//确定新三角形的顶点坐标,就是那个新冒出来的尖儿

p[1][0] = p[0][0] + length * cos((theta - 60.0) * C);

p[1][1] = p[0][1] + length * sin((theta - 60.0) * C);

divide_line(firstPoint, p[0], n - 1, theta);

divide_line(p[0], p[1], n - 1, theta - 60);

divide_line(p[1], p[2], n - 1, theta + 60);

divide_line(p[2], secondPoint, n - 1, theta);

}

else

//printf("测试,出现了一次n < 0\n");

draw_line(firstPoint, secondPoint);

}

void display()

{

glClear(GL_COLOR_BUFFER_BIT);

//三条线分别递归

//分别测试,注意角度是120,不是60,之前参数写的60导致上面两个边向三角形内部迭代,而不是外部

divide_line(vertex[0], vertex[1], N, theta);//底边

divide_line(vertex[1], vertex[2], N, theta + 120);//右边

divide_line(vertex[2], vertex[0], N, theta - 120);//左边

glFlush();

}

void myinit()

{

glClearColor(1.0, 1.0, 1.0, 1.0);

glColor3f(1.0, 0, 0);

}

//程序入口

int main(int argc, char** argv)

{

glutInit(&argc, argv);

glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);

//创建窗口,设置尺寸

glutInitWindowPosition(100, 100);

glutInitWindowSize(500, 500);

glutCreateWindow("Koch 雪花");

glutDisplayFunc(display);

myinit();

glutMainLoop();

return 0;

}

matlab画雪花,使用C++ OpenGL,完成Konx 雪花绘图相关推荐

  1. matlab画点阵图,利用matplotlib+numpy绘制多种绘图的方法实例

    前言 matplotlib 是Python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地进行制图.本文将以例子的形式分析matplot中支持的,分析中常用的几种图.其中 ...

  2. 搞个气氛 用MATLAB画一棵精致的圣诞树

    2021-12-19 出续集啦!! 在本文的基础上,实现Matlab制作圣诞树和圣诞快乐歌!欢迎试用! 接着奏乐接着舞 Matlab制作圣诞树和圣诞快乐歌_liu08_13的博客-CSDN博客 0.前 ...

  3. matlab画一个树,搞气氛!用MATLAB画一棵Bling Bling的圣诞树

    0.前言 马上圣诞节了,今天推一篇用MATLAB画圣诞树的,效果如下图所示: 1.准备工作 因为这次用的是MATLAB,不像PYTHON一样需要装一些依赖库,要实现本文的效果,只需安装MATLAB即可 ...

  4. MATLAB画高斯曲线

    MATLAB画高斯曲线 高斯曲线   均值不同 高斯曲线  方差不同 高斯曲线  方差sigma=1,改变均值a(-6, 0,+6) 高斯曲线  均值a=0,改变方差sigma (0.5, 1, 2, ...

  5. matlab泰勒图,matlab画泰勒图

    急 在matlab中写个用泰勒级数计算arctan(x)的方程 clear;clc;x=1;s=0;y=atan(x);fori=1:1e6n=2*i-1;s=s+(-(-1)^i)*(x^n)/n; ...

  6. 在线使用Octave、Matlab画单电荷等位线和电力线、matlab的nonconformant arguments错误

    如下代码,据说是matlab画单电荷等位线和电力线的: theta=[0:.01:2*pi]'; r=0:10; x=sin(theta) * r; y=cos(theta)*4; plot(x,y, ...

  7. matlab绘图z=sin(x_「matlab画三维图」Matlab 应用之绘制三维图形(基础篇) - seo实验室...

    matlab画三维图 在Matlab中,三维图形的绘制包括三维曲线,三维网线图和三维曲面图.闲话不多说,直接进入正题.首先介绍几个函数: 1.plot3(x,y,z,-) 其中,x,y,z为维数相同的 ...

  8. matlab画三维图电磁场,利用matlab实现矩形波导电磁场分布图的绘制.doc

    利用matlab实现矩形波导电磁场分布图的绘制.doc 利用MATLAB实现矩形波导电磁场分布图的绘制(附源程序)通过MATLAB计算并绘出任意时刻金属矩形波导的主模TE10模的电磁场分布图.波导尺寸 ...

  9. 【转】用matlab画极坐标图,希望不同的半径点对应不同颜色,应该怎么做?有什么函数

    https://zhidao.baidu.com/question/2204361617701408588.html?qbl=relate_question_1&word=polarplot ...

最新文章

  1. PHP程序员的技术成长规划
  2. php 整形 字符串排序,php-通过特定的字符串值进行排序
  3. 突破对银河系的传统认知 大量超高能宇宙加速器被发现
  4. python第一周小测验_荐测验1: Python基本语法元素 (第1周)
  5. C# 字符串 数据类型 判断 与特定规则验证
  6. iOS开发UI篇—UIButton简介
  7. oracle循环的方式,Oracle 的几种循环方式介绍
  8. 存储过程提示data truncation_手机DATA重新分区教程(超详细)
  9. python之多线程编程(一):基本介绍
  10. 【已解决】applicationContext.xml cannot be opened because it does not exist
  11. 部署在SAP ABAP服务器上的SAP UI5应用,resource root的计算逻辑
  12. linux下模糊搜索命令,linux命令当前文件夹下面模糊搜索文件
  13. cmd命令不识别exp_cmd 命令行exp 命令导出数据库文件
  14. AndroidDeveloper Weekly No.3
  15. python语言是非跨平台语言_python特点
  16. 最新Dynamips for工大瑞普模拟器7.2正式完全版和使用指南
  17. POJ 2112 Optimal Milking(最大流)
  18. word 项目符号(或称之为无序编号),默认,可以采用星号加空格方式实现。
  19. 计算机专业抑郁症多,计算机算法能够辅助医生诊断抑郁症?
  20. 【NOIP2015模拟】终章-剑之魂

热门文章

  1. drawlayout侧滑
  2. Notepad++Plugin NPP_Export插件
  3. 计算机补码的简单理解(补码与原码之间的转换)
  4. 360全景夜景拍摄的五大要点
  5. python-docx 切分runs时会将整个词切分成多个的问题
  6. 《剑指offer》刷题总结
  7. 深度学习实战 | 智慧工地安全帽和危险区域检测系统(代码已开源!)
  8. Matplotlib详解
  9. JavaScript-内置对象
  10. python统计小写字母出现次数_Python函数计算字母字符数,跟踪“e”出现的次数...