ストーリー、パート1
午後の早い時間に、10月下旬の日差しが少年と彼の友人たちと遊ぶ。 まだ怖くない。ハロウィーンは数時間先です。
ビデオとコード
このビデオシーケンスは、球の周りに3200ポイントを均等に配置するためのシミュレーテッドアニーリングを示しています。 最初に、ポイントは北極から南極への二重らせん状に配置されます。 二重らせんをしようとしていませんでした。最初の拡散をもう少し望んでいましたが、とにかくうまくいきます。 色は視覚化のためだけです。 初期ポイントの後、アニーリングプロセスが開始されます。 ウィキペディアは、結晶化した構造を緩和するために金属を加熱し、原子が異なる関係に移動できるようにする物理的アニーリングプロセスについて説明しています。 一部の素材は、10月の太陽の暖かさで焼きなまされることさえあります。 ここのJSLは、ビデオ用に調整されており、他の目的には最適化されていません...しかし、十分です。 焼きなまし段階では、加熱と冷却のスケジュールによって、ポイントを最も近い隣からどれだけ離すことができるかが制御されます。 ポールには多くのポイントが密集しているため、それらのポイントが移行する時間があるように、スケジュールはシステムを少しの間高温に保つ必要があります。 その「高温」では、ポイントは十分にジャンプしているため、別のポイントの近隣に頻繁に行き過ぎています。 スケジュールの段階的な冷却段階により、ポイントが落ち着き、移動が少なくなります。 ビデオは、完全に落ち着く前に終了します。
アニーリング-YouTube

nnodes = 3200;
xx = -nnodes * 3 / 2;
nodelocs = J( nnodes, 3, 0 ); // x,y,z point for each node
For( i = 1, i <= nnodes, i++,
f = i / nnodes; // 0..1
z = Cos( f * Pi() ); // top to bottom
r = Sin( f * Pi() ); // radius
x = Sin( 10000 * f ) * r; // 10,000 radians
y = Cos( 10000 * f ) * r; // is way too many. but it works...
nodelocs[i, 1] = x;
nodelocs[i, 2] = y;
nodelocs[i, 3] = z;
);
//nodeobj = scene displaylist(); nodeobj<