跳轉到內容

分形/Fractalshades

來自華夏公益教科書

Fractalshades 由 Geoffroy Billotey 創作

pip install pip setuptools --upgrade
pip install fractalshades

在哪裡?

zalman:~$ pip list -v
Package                 Version         Location                                    Installer
----------------------- --------------- ------------------------------------------- ---------
apturl                  0.5.2           /usr/lib/python3/dist-packages
bcrypt                  3.2.0           /usr/lib/python3/dist-packages
blinker                 1.4             /usr/lib/python3/dist-packages
Brlapi                  0.8.3           /usr/lib/python3/dist-packages
certifi                 2020.6.20       /usr/lib/python3/dist-packages
chardet                 4.0.0           /usr/lib/python3/dist-packages
chrome-gnome-shell      0.0.0           /usr/lib/python3/dist-packages
click                   8.0.3           /usr/lib/python3/dist-packages
colorama                0.4.4           /usr/lib/python3/dist-packages
command-not-found       0.3             /usr/lib/python3/dist-packages
cryptography            3.4.8           /usr/lib/python3/dist-packages
cupshelpers             1.0             /usr/lib/python3/dist-packages
dbus-python             1.2.18          /usr/lib/python3/dist-packages
defer                   1.0.6           /usr/lib/python3/dist-packages
Deprecated              1.2.13          /usr/lib/python3/dist-packages
distro                  1.7.0           /usr/lib/python3/dist-packages
distro-info             1.1build1       /usr/lib/python3/dist-packages
duplicity               0.8.21          /usr/lib/python3/dist-packages
fasteners               0.14.1          /usr/lib/python3/dist-packages
fractalshades           0.5.6           /home/a/.local/lib/python3.10/site-packages pip


為了互動式探索,一個 GUI 在 PyQt6 下實現。

投影定義了一個對映,它作用於螢幕畫素 在迭代之前。


投影

指數投影 將對映 如下所示

其中


縮放的 `xy_ratio` 將在執行時調整,以確保: 擴充套件到

 def adjust_to_zoom(self, fractal):
        # We need to adjust the fractal xy_ratio in order to match hmax - hmin
        # target: dh = 2. * np.pi * xy_ratio 
        if self.premul_1j:
            xy_ratio = (np.pi * 2.) / self.dh
            nx = int(fractal.nx * xy_ratio + 0.5)
        else:
            xy_ratio = self.dh / (np.pi * 2.)
            nx = fractal.nx
    
        fractal.xy_ratio = self.xy_ratio = xy_ratio
        fractal.zoom_kwargs["xy_ratio"] = xy_ratio
        fractal.nx = nx
        fractal.zoom_kwargs["nx"] = nx

        logger.info(
            "Adjusted parameters for Expmap projection:\n"
            f"zoom parameter nx: {fractal.nx}\n"
            f"zoom parameter xy_ratio: {fractal.xy_ratio}"
        )
        self.make_impl()


此類可用於任意精度深層縮放。

引數

  • hmin:str 或 float 或 mpmath.mpf
  • x 軸下端處的縮放比例
  • hmax:str 或 float 或 mpmath.mpf
  • x 軸上端處的縮放比例
  • rotates_df:bool。如果 ``True``,則導數將根據對映進行縮放,但也將旋轉。否則,將僅考慮縮放比例。經驗法則是在製作獨立圖片時將此值設定為 ``True``,而在將其用作電影製作工具的輸入時設定為 ``False``


它在類中定義

class Expmap(Projection):
  def __init__(self, hmin, hmax, rotates_df=True, orientation="horizontal"):

示例

projection = fs.projection.Expmap(-1.3, np.log(1.e7) + 0.3)

所以

  • hmin = -1.3
  • hmax = log(1.e7) + 0.3 = 10000000.3


一個簡單的直通幀,提取原始 my_db 資料是

fractalshades.db.Frame(
    x=0., y=0., dx=1.0,
    nx=my_db.zoom_kwargs["nx"],
    xy_ratio=my_db.zoom_kwargs["xy_ratio"]
)

參考資料

[編輯 | 編輯原始碼]
華夏公益教科書