
数学において、軌道トラップとは、フラクタルを作成するために使用される反復関数が「トラップ」と呼ばれる幾何学的形状にどれだけ近づくかに基づいてフラクタル画像を着色する方法です。一般的なトラップには、点、線、円、花の形、さらにはラスター画像などがあります。軌道トラップは、通常、複素平面を表す 2 次元フラクタルを着色するために使用されます。
例

ポイントベース
ポイントベースの軌道トラップは、関数の軌道が単一のポイント(通常は原点)にどれだけ近づくかに基づいてポイントに色を付けます。
ラインベース
ラインベースの軌道トラップは、関数の軌道が 1 つ以上の線 (通常は垂直または水平 (x=a または y=a 線)) にどれだけ近いかに基づいて点に色を付けます。ピックオーバー ストークは、2 本の線を使用するラインベースの軌道トラップの例です。

アルゴリズム
軌道トラップは、通常、反復関数に基づく 2 次元フラクタルのクラスで使用されます。このようなフラクタルを作成するプログラムは、関数を一定回数通過したときの点の動作に基づいて、複素平面内の離散点を表す各ピクセルに色を付けます。
この種のフラクタルの最もよく知られた例は、関数z n +1 = z n 2 + cに基づくマンデルブロ集合です。マンデルブロ画像に色を付ける最も一般的な方法は、特定の救済値に到達するのに必要な反復回数を取得し、その値に色を割り当てることです。これはエスケープタイムアルゴリズムと呼ばれます。
ポイントベースの軌道トラップを使用してマンデルブロ集合に色を付けるプログラムは、各ピクセルに「距離」変数を割り当てます。この変数は、通常、最初に割り当てられたときには非常に高くなります。
倍の距離= 10 e5
プログラムは、複素数値を反復関数に渡すと、軌道上の各点とトラップ ポイント間の距離をチェックします。距離変数の値は、反復中に見つかった最短距離になります。
private double getDistance ( Complex c , Complex point , int maxIteration ) { double distance = 1e20 ; Complex z = new Complex ( 0 , 0 ); for ( int i = 0 ; i < maxIteration ; i ++ ) { //マンデルブロ反復処理を実行しますz = z.multiply ( z ) ; z = z.add ( c ); // 新しい距離を設定しますdist = min( dist, |z-point| ) Complex zMinusPoint = new Complex ( z ) ; zMinusPoint = zMinusPoint.subtract ( point ) ; double zMinusPointModulus = zMinusPoint.magnitude ( ) ; if ( zMinusPointModulus < distance ) distance = zMinusPointModulus ; } return distance ; }
参考文献
- カールソン、ポール W. (1999)、「ニュートン M セット フラクタルの 2 つの芸術的軌道トラップ レンダリング方法」、Computers & Graphics、23 (6): 925– 931、doi :10.1016/S0097-8493(99)00123-5。
- Lu, Jian; Ye, Zhongxing; Zou, Yuru; Ye, Ruisong (2005)、「結晶学的対称性を持つ芸術的な画像を生成するための軌道トラップレンダリング法」、Computers & Graphics、29 (5): 787– 794、doi :10.1016/j.cag.2005.08.008。
