昔作ったドラゴン曲線(「ドラゴン曲線を描画する」)のデータを引っ張り出してみました。
ドラゴン曲線のジェネレータとC曲線のジェネレータはすごく似ているのです(下図)。
※1本だけ、矢印の向きが異なる。
「ドラゴン曲線を描画する」にて、レイトレーシングして動画データを生成したのはドラゴン曲線だけだったのですが、ジェネレータがほんの少し変わるだけなので、ちょっと手を加えるとC曲線を描画するレイトレーシングデータに変更することが出来ます。
今回C曲線を描画するために変更・追加したのは以下の部分です。
var draw_c=true; // C曲線を描画する(true)
dragon lev - 1, a.x,a.y,a.z, c.x,c.y,c.z;
if (draw_c)
{
dragon lev - 1, c.x,c.y,c.z, b.x,b.y,b.z; // C曲線
}
else
{
dragon lev - 1, b.x,b.y,b.z, c.x,c.y,c.z; // ドラゴン曲線
}
ドラゴン曲線と違って、C曲線はほぼ、一筆書きみたいな感じで伸びて行くので、あんまり面白いものでもなかったのですが、まあ、一度ご覧ください(↓)。
完成したデータをリンクしておきます。
1) | Xi-TRACEデータ | dragon_curve.xitr |
ファイル名はオリジナルのままとしてあります。デフォルトの設定ではドラゴン曲線を描画するので、C曲線を描画する場合には、先頭付近のdraw_c変数でC曲線を選択する必要があります。
久しぶりに計算させてみたのですが、描画が進むにつれて曲線が伸びて行くことで物体数が増加し、1画面の計算時間もどんどんと増加して行きました……。お陰で計算時間の見積もりを見誤ってしまいました。
オリジナルのドラゴン曲線動画はこちらです(↓)。