Skip to main content
标签ad报错:该广告ID(9)不存在。
  主页 > Qt入门

一个 qt/c++ demo,demo由两个界面组成,一个界面上显示40种不同的分形图的缩略图,点击缩略图进入到另外一个界面,界面上显示放大的分形图

2023-04-24 浏览:
标签ad报错:该广告ID(7)不存在。
请给我一个 qt/c++ demo,demo由两个界面组成,一个界面上显示40种不同的分形图的缩略图,点击缩略图进入到另外一个界面,界面上显示放大的分形图。这四十种分形图包括:

Mandelbrot Set(曼德博集合):由复平面上一系列特定的点组成的分形图形。在边缘处呈现出无数精细的结构,具有自相似性和重复性。

Julia Set(朱利亚集合):同样由复平面上一系列特定的点组成,但形状是根据一个给定的参数函数 f(z) 来计算得到的。可以通过改变其参数,从而生成不同的 Julia Set。

Koch Curve(科赫曲线):由一条直线不断分割、缩小,并在其两侧加上等边三角形,从而构成的一种分形曲线。

Sierpinski Triangle(谢尔宾斯基三角形):最早发现的分形图之一。从一个正三角形开始,通过不断去除三角形中心的等边三角形,可以得到越来越复杂的图形。

Cantor Set(康托尔集合):由一段线段不断分割,并去除其中间的区域,从而构成的一种分形图形。

Barnsley Fern(巴恩斯利蕨):用 IFS(Iterated Function System)算法生成的分形植物。通过对一些变换函数进行不断迭代,可以得到栩栩如生的蕨类叶子形状。

Dragon Curve(龙形曲线):通过将一个线段不断旋转、镜像、连接,从而生成的一种分形曲线。最终形态类似于一条龙。

Sierpinski Carpet(谢尔宾斯基地毯):类似于谢尔宾斯基三角形,由一个正方形不断缩小,并在其九个位置中心去除正方形,从而构成的一种图形。

Mandelbulb(曼德博派):是曼德博集合的一种扩展,将平面替换成了三维空间。通过对一些复杂的运算,可以得到具有神秘感和科幻感的图形。

Lévy C Curve(莱维C曲线):由一条直线不断分割、连接,最终形成的一种分形曲线。具有对称美和简洁感。

Menger Sponge(曼戈尔海绵):这是一个三维的分形图形,由一个正方体不断分割、去掉内部的立方体,从而构成的一种图形。具有自相似性和重复性。

Hexagonal Gasket(六角镂垫):类似于 Sierpinski Triangle 和 Sierpinski Carpet,由一个六边形不断分割、去掉中心部分,从而构成的一种图形。具有几何美和规则感。

Barnsley Tree(巴恩斯利树):用 IFS 算法生成的分形树。通过对一些变换函数进行不断迭代,可以得到和真实树木形态相似的结果。

Hilbert Curve(希尔伯特曲线):由一个二维矩形不断分割,并在其内部连接、转折,从而构成有序的一系列点。最终形态类似于弯曲的蛇形。

Gosper Curve(高斯波曲线):通过将一系列线段不断连接、旋转、缩放,最终形成的一种分形曲线。具有几何感和流畅感。

Pythagoras Tree(毕达哥拉斯树):根据毕达哥拉斯定理构造的一种分形图形。从一个正方形开始,通过不断添加和旋转直角三角形,可以得到树状结构。

Triflake(三叶雪花):基于 Koch Curve 的一个变种,由一个正三角形和其各边上的等边三角形组成。在其组合、分割、连接的过程中,形成了一种栩栩如生的雪花形状。

Sierpinski Arrowhead Curve(谢尔宾斯基箭头曲线):由一个三角形不断分割、旋转、连接,从而形成的一种分形曲线。具有自相似性和层次感。

T-Square(T型正方形):由一个正方形不断分割,并在其每个角上加上一个新的正方形,从而构成的一种图形。具有对称美和规则感。

Heighway Dragon Curve(海维龙形曲线):类似于 Dragon Curve,是通过不断旋转和连接线段形成的一种分形曲线。但它的特点是,在每一次迭代中,具有左右两种变换的可能性。

Pentaplexity(五向复杂图案):由一个五边形不断缩放、连接、转折而成的一种图案。具有几何感和流畅感。

Sierpinski Hexagon(谢尔宾斯基六边形):与 Sierpinski Triangle 和 Sierpinski Carpet 类似,由一个六边形不断分割、去除中心部分,构成的一种图形。具有对称美和规则感。

Pythagorean Tree(勾股树):类似于 Pythagoras Tree,但是它的每一步都是通过勾股定理计算得到的,其中直角三角形的两条直角边分别为前一步中短边和长边。

Dendrite(树枝形图案):基于 Lévy C Curve 的扩展形式,由几个分支不断连接和延伸而成的分形图案。具有自然美和流畅感。

Sierpinski Carpet with Holes(带洞的谢尔宾斯基地毯):与标准的 Sierpinski Carpet 相比,其在每次迭代时增加了一个圆形洞穴,使得图形更加丰富多彩。

Serpinski Polygon(谢尔宾斯基多边形):由一个正多边形不断缩小、连接、旋转而成的一种图形。具有对称美和层次感。

Burning Ship Fractal(沉船分形):类似于 Mandelbrot Set,但使用的是另一种复数运算法则。形态类似于燃烧的船舶,具有神秘感和科幻感。

Vicsek Fractal(维塞克分形):由一个正方形不断分割、去除中心部分,并在其四周连接新的正方形,从而构成的一种图形。具有对称美和规则感。

T-Square Fractal(T型正方形分形):类似于 T-Square,但是每个正方形被分成了四个更小的正方形,并依次连接、缩放而得到。具有对称美和流畅感。

Pythagoras Tree Fractal(勾股树分形):类似于 Pythagoras Tree,但是在每一步中,将直角三角形的短边和长边都再次分割为两段,并连接出新


Gasket Fractal(镂垫分形):由一个正方形不断分割、去除中心部分,从而构成的一种图形。通过在其各个边缘上加上类似于赋值号的小图形,可以生成各种不同的 Gasket Fractal。

Hexagonal Gosper Curve(六角高斯波曲线):由一些六边形不断旋转、连接、缩放而得到的一种分形曲线。具有几何美和规律感。

Cantor Dust(康托尔尘埃):类似于 Cantor Set,但是在每次迭代时,将每个缺口再次分割成更多的缺口,最终形成了一种密密麻麻的点集合。

Sierpinski Tetrahedron(谢尔宾斯基四面体):与 Sierpinski Triangle 和 Sierpinski Carpet 相似,由一个四面体不断分割、去掉中间部分,从而构成的一种图形。具有对称美和立体感。

Peano Curve(皮亚诺曲线):由一个二维正方形不断分割,并在其各个位置上连接、转折,从而形成一条连续的曲线。最终形态类似于类似于填满整个正方形的螺旋。

Apollonian Gasket(阿波罗尼恩镂垫):由三个相切的圆不断分割、连接、缩放,从而构成的一种分形图形。具有几何美、对称美和自然美。

Terdragon Curve(三头龙曲线):类似于 Dragon Curve 和 Heighway Dragon Curve,是一种基于几何形状的分形曲线。其名字来源于其类似于三个头的形状。

Spiral Fractal(螺旋分形):由一个复杂的螺旋图案组成的一种分形图形。通过不断绕着原来的螺旋走圈,就可以得到越来越复杂的图案。

Tree Fractal(树状分形):基于 Pythagoras Tree 的扩展形式。通过将每个直角三角形分成更小的三角形,并在其上继续生成新的树枝,而得到一种栩栩如生的树状分形。

Koch Snowflake (科赫雪花):由一个正三角形不断分割、缩小,并在其各个边缘上加上类似于 Koch Curve 的结构,从而构成了一种冰雪般的分形图形。



为了完成要求,我们需要进行以下步骤:

   创建一个 QT/C++ 的项目
   在主界面中显示 40 种不同的分形图的缩略图
   点击缩略图,进入到另一个界面,显示放大的分形图

以下是具体实现步骤:

   在QT Creator中打开一个新项目,选择QT Widgets应用程序,取名为“FractalViewer”。
   在“FractalViewer”项目中添加两个窗口(QMainWindow),命名为 mainWindow 和 fractalWindow。
   在 mainWindow 窗口中添加 40 个缩略图,并设置该界面布局。您可以使用 QT Designer 进行可视化设计,也可以在 C++ 代码中使用 QT API 添加控件并设置布局。
   在 fractalWindow 窗口中添加一个用于显示放大分形图的区域(QWidget),您可以在该控件上使用 QT API 进行绘图操作。
   在 mainWindow 窗口中为每个缩略图添加点击事件,根据不同的点击事件跳转到对应的 fractalWindow 界面,并在 fractalWindow 界面中绘制对应的放大分形图。您可以使用 QT API 实现界面跳转和绘图操作。需要注意的是,在 fractalWindow 界面中,您需要根据用户点击的不同分形图类型进行绘图,所以需要提前准备好所有的分形图数据。

最后,可以使用 C++ 编写各个分形算法绘制函数,或者使用已有的开源库进行绘制。

例如,如果您希望绘制 Mandelbrot Set,可以使用GNU Scientific Library (GSL) 的复数库来计算迭代过程并绘制图形。