朱利亚集合是一个在复平面上形成分形的点的集合。以法国数学家加斯顿·朱利亚(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)集合图形的更多相关文章

  1. CUDA+OpenCV 绘制朱利亚(Julia)集合图形

    Julia集中的元素都是经过简单的迭代计算得到的,很适合用CUDA进行加速.对一个600*600的图像,需要进行360000次迭代计算,所以在CUDA中创建了600*600个线程块(block),每个 ...

  2. 混沌分形之朱利亚集(JuliaSet)

    朱利亚集合是一个在复平面上形成分形的点的集合.以法国数学家加斯顿·朱利亚(Gaston Julia)的名字命名.我想任何一个有关分形的资料都不会放过曼德勃罗集和朱利亚集.这里将以点集的方式生成出朱利亚 ...

  3. 详解用OpenCV绘制各类几何图形

    摘要:本文详细介绍了OpenCV绘制几何图形的方法,利用cv2.line().v2.circle().cv2.rectangle().cv2.ellipse().cv2.polylines().cv2 ...

  4. Linux命令之dot - 绘制DOT语言脚本描述的图形

    本文链接:http://codingstandards.iteye.com/blog/840055 用途说明 Graphviz (Graph Visualization Software的缩写)是一个 ...

  5. C# winform如何清除由Graphics类绘制出来的所有线条或图形

    在C#winform应用程序中,可以用GDI绘制出线条或图形. 1.在主窗体上绘制线条或图形 using (Graphics g = this.CreateGraphics())      {    ...

  6. Turtle绘制带颜色和字体的图形(Python3)

    转载自https://blog.csdn.net/wumenglu1018/article/details/78184930 在Python中有很多编写图形程序的方法,一个简单的启动图形化程序设计的方 ...

  7. 绘制播放音乐时的音波图形的View

    绘制播放音乐时的音波图形的View 这个效果类似于这个哦: 效果如下: 源码: MusicView.h 与 MusicView.m // // MusicView.h // Music // // C ...

  8. OpenCV绘制检测结果

    OpenCV绘制检测结果 opencv  rtcp  timestamp  一.介绍 由于在验证阶段,使用FPGA时我们的算法检测速度很慢,没法直接在主流上进行绘图,否则的话,主流就要等待算法很久才能 ...

  9. [CTF]维吉尼亚密码(维基利亚密码)

    [CTF]维吉尼亚密码(维基利亚密码) ----------------------百度百科 https://baike.baidu.com/item/维吉尼亚密码/4905472?fr=aladdi ...

随机推荐

  1. php 获取数组第一个key 第一个键值对 等等

    PHP 获取数组中的第一个元素或最后一个元素的值或者键值可以使用 PHP 自带的数组函数. PHP 获取数组中的第一个元素的值或者键值所使用的函数: current() - 返回数组中当前元素值(即: ...

  2. 前端js常用正则表达式实例讲解

    本文内容整理自他人优秀的博客,非纯原创.仅借此学习和整理. 1.匹配用户名 规则描述: 长度4-6位: {4,16} 字母: [a-z] [A-Z] 数字: [0-9] 下划线: [_] 减号: [- ...

  3. HDU 2077 汉诺塔IV 递归 通项公式

    刚刚做的HDU 2064很好找规律, 回忆一下: b[1] = 2; b[n] = b[n-1] *3 + 2; 可得b[n]= 3^n-1 不懂的传送门http://blog.csdn.net/mu ...

  4. 基于mpvue的小程序项目搭建的步骤一

    未标题-1.png mpvue 是美团开源的一套语法与vue.js一致的.快速开发小程序的前端框架,按官网说可以达到小程序与H5界面使用一套代码.使用此框架,开发者将得到完整的 Vue.js 开发体验 ...

  5. [Angular2 Router] Index router

    Index router as default router. import {RouterModule} from "@angular/router"; import {NotF ...

  6. GDB如何调试没有符号表(未加-g选项的编译)的程序

    /********************************************************************* * Author  : Samson * Date    ...

  7. stm32的timer

  8. vue学习笔记二:v-if和v-show的区别

    v-if vs v-show v-if 是“真正的”条件渲染,因为它会确保在切换过程中条件块内的事件监听器和子组件适当地被销毁和重建. v-if 也是惰性的:如果在初始渲染时条件为假,则什么也不做—— ...

  9. 开源分享三(炫酷的Android Loading动画)

    开源分享三(炫酷的Android Loading动画) 分享GitHub上的一些Loading,为了提升产品用户体验,一个好的Loading必然是不可缺少的,对于一些耗时需要用户等待的页面来说会转移用 ...

  10. MySQL误删数据救命指南

    预防误操作导致文件/数据丢失的建议: 1.欲删除文件时,将rm命令改成mv,可在系统层面将rm命令做个alias(或参考Windows / Mac OSX做法,删除文件时先进回收站).2.删除数据库. ...