Okamoto's Homepage
このページの内容は,プログラミングのようなことをやったことがない人にとっては,やや難しいかもしれません。よく分からん,という人は,とりあえずこのページのことは無視してください。
まずは次の画像を見てください。
見ての通り,黄色い球が五つ並んでいるだけの画像です。球を5個並べるだけなら,一つ一つ作って移動していっても大したことはありません。でも,これが1000個並べろと言われたら,とても手作業では無理ですね。POV-Rayでは「#while (...) 〜 #end」という命令を使うことで,大量の同じオブジェクトを簡単に作成することができます。
上の画像のソースは次の通りです。
#include "colors.inc"
camera {
location <0.0, 1.0, -5.0>
look_at <0.0, 0.0, 0.0>
right x*image_width/image_height
}
light_source {
<100, 100, -100>
color rgb 1.0
}
#declare MyValue = -2;
#while ( MyValue <= 2 )
object {
sphere { <0, 0, 0>, 0.5 }
pigment { Yellow }
translate <MyValue, 0, 0>
}
#declare MyValue = MyValue + 1;
#end
|
「#while (...)〜#end」というのは,「(...)」内の条件である間は,「〜」の部分の処理をしなさいという命令です。
上のソースでは,赤字の部分で「#while」の後に「( MyValue <= 2 )」とありますね。つまりこの場合は,「MyValue」が2以下である間は,#whileと#endで囲まれた部分の処理をしなさいと,POV-Rayに命令しているのです。
上の赤字の部分でやろうとしていることを整理すると,
という感じになります。1.では,#while(...) 〜 #endの外側で,MyValueを-2にしています。これが初期値になります。4.で,MyValueの値を1だけ足しています。つまりMyValueの値は-2からはじまって,1ずつ増えていきます。
-2から1ずつ足していくと,いずれ3になりますね。#whileのところで,「MyValue <= 2」,つまりMyValueが2以下である場合に,次の処理をしろという条件を付けていますから,MyValueの値が3になってしまえば,もう条件には合っていないわけです。
うーん,なんかややこしいかんじですね。
でも,何度か試してみると何となく分かると思いますので,やってみてください。
上の例ではオブジェクトを移動させていますが,拡大・縮小したり,色を変えたりと,いろいろなことができます。