首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> Delphi

DelphiX 實戰:TDIB.DrawMandelbrot 曼德博集合分形繪製

     編輯:Delphi

TDIB.DrawMandelbrot 直接在 DIB 上繪製著名的曼德博集合分形圖像,無需外部資源即可生成無限細節的數學之美。本文提供最簡單的全螢幕繪製範例。

效果預覽

曼德博集合分形

核心程式碼

unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DIB, StdCtrls;
type
  TForm1 = class(TForm)
    DXPaintBox1: TDXPaintBox;
    procedure FormCreate(Sender: TObject);
  end;
var Form1: TForm1;
implementation {$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  DXPaintBox1.Align := alClient; // 填滿視窗
  DXPaintBox1.DIB.SetSize(DXPaintBox1.ClientWidth, DXPaintBox1.ClientHeight, 24);
  // DrawMandelbrot(Iterations, Left, Right, Top, Bottom)
  DXPaintBox1.DIB.DrawMandelbrot(1, -2, 1.5, -1.5);
end;
end.

參數說明

DrawMandelbrot(MaxIter: Integer; Left, Right, Top, Bottom: Double)
  • MaxIter:最大疊代次數,越大細節越豐富但越慢(範例用 1 極快但粗糙)
  • Left, Right, Top, Bottom:複平面顯示範圍(實部 -2~1.5,虛部 -1.5~1.5 為經典全圖)
  • 顏色映射為內建調色盤,不可自訂

進階玩法

  • 縮放探索:按滑鼠點擊區域調整 Left/Right/Top/Bottom 重繪,實現無限縮放
  • 動畫著色:定時器改變 MaxIter 或調色盤偏移產生動態效果
  • 多執行緒:將畫面分塊平行計算,大幅提升高解析度渲染速度
  • Julia 集合:修改疊代公式 z = z^2 + c 中的常數 c 產生不同形狀

數學背景

曼德博集合定義為複平面上滿足 z_{n+1} = z_n^2 + c 不發散的點 c 組成的集合。圖像中黑色區域為集合內部,彩色區域為發散速度(疊代次數)的可視化映射。

效能提示

  • MaxIter=1 僅作示範,實際觀賞建議 50~200
  • 全螢幕高解析度 + 高疊代 = 計算密集,適合離線預渲染或 GPU 移植
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved