OpenCV绘制朱利亚(Julia)集合图形
朱利亚集合是一个在复平面上形成分形的点的集合。以法国数学家加斯顿·朱利亚(Gaston Julia)的名字命名。
朱利亚集合可以由下式进行反复迭代得到:
对于固定的复数c,取某一z值(如z = z0),可以得到序列
这一序列可能反散于无穷大或始终处于某一范围之内并收敛于某一值。我们将使其不扩散的z值的集合称为朱利亚集合。
以下使用OpenCV编码绘制Julia集图形:
#include <Windows.h>
#include<highgui/highgui.hpp>
using namespace cv;
const int icount = 200; //迭代次数
const float c = -0.85; //实部
const float d = 0.088; //虚部
double m_real, m_image; //Mandelbro集
class ComplexClass
{
public:
double real;
double image;
ComplexClass(double r = 0, double i = 0) { real = r, image = i; }
};
ComplexClass operator+(const ComplexClass& a, const ComplexClass &b)
{
ComplexClass c;
c.real = a.real + b.real;
c.image = a.image + b.image;
return c;
}
ComplexClass operator*(const ComplexClass& a, const ComplexClass &b)
{
ComplexClass c;
c.real = a.real * b.real - a.image * b.image;
c.image = a.image * b.real + a.real * b.image;
return c;
}
double Model(ComplexClass a)
{
return sqrtf(a.real * a.real + a.image * a.image);
}
double Iteration(ComplexClass a, int n)
{
if (n == 0)
return Model(a);
else
{
ComplexClass temp = a*a;
temp.real += c;
temp.image += d;
// temp.real += m_real; 把这两句代替前面的两句就是mandelbrot集了
// temp.image += m_image;
return Iteration(temp, n - 1);
}
}
Vec3b dye(double dist)
{
if (dist < 1000000 && dist>-1000000)
return Vec3b(255, 0, 0);
else
return Vec3b(0, 0, 0); //Julia集之外的区域置为黑色
}
int main()
{
Mat image = Mat(Size(500, 500), CV_8UC3, Scalar::all(10));
for (int Y = 0; Y < image.rows; Y++)
{
for (int X = 0; X < image.cols; X++)
{
float x = (X - image.cols / 2) / 200.0;
float y = (Y - image.rows / 2) / 200.0;
m_real = x;
m_image = y;
ComplexClass a(x, y);
float dist = Iteration(a, icount);
image.at<Vec3b>(Y, X) = dye(dist);
}
}
//namedWindow("OpenCV For Julia", 0);
imshow("OpenCV For Julia | c = -0.85 d = 0.088", image);
waitKey();
}
改变实部c和虚数b的值可以得到不同的图形,很漂亮。
c=-0.576 d=0.456:
c=-0.8 d=0.156:
c=0.285 d=0.02:
c=-0.85 d=0.088:
OpenCV绘制朱利亚(Julia)集合图形的更多相关文章
- CUDA+OpenCV 绘制朱利亚(Julia)集合图形
Julia集中的元素都是经过简单的迭代计算得到的,很适合用CUDA进行加速.对一个600*600的图像,需要进行360000次迭代计算,所以在CUDA中创建了600*600个线程块(block),每个 ...
- 混沌分形之朱利亚集(JuliaSet)
朱利亚集合是一个在复平面上形成分形的点的集合.以法国数学家加斯顿·朱利亚(Gaston Julia)的名字命名.我想任何一个有关分形的资料都不会放过曼德勃罗集和朱利亚集.这里将以点集的方式生成出朱利亚 ...
- 详解用OpenCV绘制各类几何图形
摘要:本文详细介绍了OpenCV绘制几何图形的方法,利用cv2.line().v2.circle().cv2.rectangle().cv2.ellipse().cv2.polylines().cv2 ...
- Linux命令之dot - 绘制DOT语言脚本描述的图形
本文链接:http://codingstandards.iteye.com/blog/840055 用途说明 Graphviz (Graph Visualization Software的缩写)是一个 ...
- C# winform如何清除由Graphics类绘制出来的所有线条或图形
在C#winform应用程序中,可以用GDI绘制出线条或图形. 1.在主窗体上绘制线条或图形 using (Graphics g = this.CreateGraphics()) { ...
- Turtle绘制带颜色和字体的图形(Python3)
转载自https://blog.csdn.net/wumenglu1018/article/details/78184930 在Python中有很多编写图形程序的方法,一个简单的启动图形化程序设计的方 ...
- 绘制播放音乐时的音波图形的View
绘制播放音乐时的音波图形的View 这个效果类似于这个哦: 效果如下: 源码: MusicView.h 与 MusicView.m // // MusicView.h // Music // // C ...
- OpenCV绘制检测结果
OpenCV绘制检测结果 opencv rtcp timestamp 一.介绍 由于在验证阶段,使用FPGA时我们的算法检测速度很慢,没法直接在主流上进行绘图,否则的话,主流就要等待算法很久才能 ...
- [CTF]维吉尼亚密码(维基利亚密码)
[CTF]维吉尼亚密码(维基利亚密码) ----------------------百度百科 https://baike.baidu.com/item/维吉尼亚密码/4905472?fr=aladdi ...
随机推荐
- 对inetd、xinetd与TCP_Wrapper的基本了解
在Linux系统中有一个特殊的守护进程inetd(InterNET services Daemon),它用于Internet标准服务,通常在系统启动时启动.通过命令行可以给出inetd的配置文件,该配 ...
- 10、bitmap格式分析
说到图片,位图(Bitmap)当然是最简单的,它Windows显示图片的基本格式,其文件扩展名为*.BMP.在Windows下,任何各式的图片文件(包括视频播放)都要转化为位图个时候才能显示出来,各种 ...
- google analytics是什么(免费的网站流量分析服务:比如分析有多少个人来了你的网站,告诉你怎么样才能在网站上面实现最大收益。)
google analytics是什么(免费的网站流量分析服务:比如分析有多少个人来了你的网站,告诉你怎么样才能在网站上面实现最大收益.) 一.总结 免费的网站流量分析服务:比如分析有多少个人来了你的 ...
- GDB(十)--调试正在运行的进程
我编写了一个循环: long i; for (i = 0; i < 999999; i++) { mt.a += 1; sleep(1); }把它编译成a ...
- thinkphp3.2二维码扩展
//简易二维码 public function qrcode(){ Vendor('phpqrcode.phpqrcode'); //生成二维码图片 $object = new \QRcode(); ...
- HQL和SQL的区别
1.hql与sql的区别 sql 面向数据库表查询 hql 面向对象查询 hql : from 后面跟的 类名+类对象 where 后 用 对象的属性做条件 sql: from 后面跟的是表名 ...
- form表单嵌套,用标签的form属性来解决表单嵌套的问题
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- jquery简单使用(看教程:快全有实例)(固定样式:$().val()设置属性,$().click()设置方法)
jquery简单使用(看教程:快全有实例)(固定样式:$().val()设置属性,$().click()设置方法) 一.总结 1.jquery不懂之处直接看教程,案例都有,有简单又快 2.jquery ...
- 编译Valgrind arm交叉编译
1. 下载源码: http://valgrind.org/downloads/valgrind-3.9.0.tar.bz2 2. 加压缩: mkdir sw cd sw tar zxf valgr ...
- CISCO - 查找命令行
http://www.cisco.com/c/en/us/support/web/tools/help/command_search_best_practices.html Support Best ...