トップページ > .CELXスクリプトガイド > .CELXスクリプトの作成方法
.CELXスクリプトの作成方法
オブジェクトの種類
.CELXスクリプトでは様々なオブジェクトがあります。これらを用いてスクリプトを作成します。
- celestiaオブジェクト
天体・天体名の表示や、時刻の設定など、Celestiaの基本的な事柄を扱います。
- observerオブジェクト
視点動作に関する操作を扱います。画面の分割もobserverオブジェクトを用います。
- objectオブジェクト
「オブジェクトオブジェクト」は多少変な呼び方ですがこのobjectは「天体」を指します。
その名の通り個別の天体に付いての操作を扱います。
- positionオブジェクト
宇宙空間内での位置に関するオブジェクトです。
- vectorオブジェクト
x、y、z成分を持ったベクトルです。
主にpositionオブジェクトやrotationオブジェクトに対して操作するのに用いられます。
- rotationオブジェクト
視点の回転方向に関するオブジェクトです。
- frameオブジェクト
- celscriptオブジェクト
.CELXスクリプト内で.CELスクリプトを扱う際に用います。
Celestiaの起動直後は、Lua固有のオブジェクトを除けば、celestiaオブジェクトのみが存在します。
その他のオブジェクトはメソッドを用いて作成します。
例:
obs = celestia:getobserver()
pos = obs:getposition()
例文中のobs、posはそれぞれobserverオブジェクト、positionオブジェクトの変数となります。また、変数名は任意の名前です。
変数に対してメソッドを実行するには変数:メソッドと記述してください。
オブジェクトの演算
各オブジェクトは+、-、*の演算子を用いて次のように演算できます。なおsは数値です。
- vector = vector + vector
- vector = vector - vector
- vector = position - position
- vector = vector * s
- vector = s * vector
- vector = vector ^ vector
- number = vector * vector
- rotation = rotation + rotation
- rotation = rotation * rotation
- rotation = rotation * s
- rotation = vector * rotation
- position = vector + position
- position = position + position
- position = position + vector
例: 天体へ移動
地球へ移動します。
天体へ移動する為にobserverオブジェクト、天体を取得するためにobjectオブジェクトを使用します。
obs = celestia:getobserver()
earth = celestia:find("Sol/Earth")
obs:goto(earth, 10)
天体へ移動するにはobserverオブジェクトのgotoメソッドを使用します。
まずgotoメソッドを使用する為にobs = celestia:getobserver()でobserverオブジェクトを取得します。
次に地球に対して操作を行う為にearth = celestia:find("Sol/Earth") 地球のobjectオブジェクトを取得します。
そしてgotoを実行します。gotoメソッドは引数としてobjectオブジェクトと数値を順に引数に取ります。
- 移動先の天体をobjectオブジェクトで指定します。
- 数値は移動にかける時間です。単位は[秒]です。省略すると5秒で移動します。
次に一旦地球を画面の中心に移動させてから移動します。
obs = celestia:getobserver()
earth = celestia:find("Sol/Earth")
obs:center(earth, 3)
wait(3)
obs:goto(earth, 10)
centerメソッドは指定した天体を画面中心にします。gotoオブジェクトと同様な引数をとります。
すなわち、上の例では3秒かけて地球を画面中心にします。
waitは指定した時間だけ次のメソッドの実行を待ちます。この場合は3秒待ちます。
centerやgotoといった視点の動作を伴うメソッドでは次に同様のメソッドを実行する前に継続時間分以上待つ必要があります。
上のcenterメソッドの継続時間は3秒なのでgotoメソッドを実行する前に3秒待っています。
observer:goto、observer:centerも参照してください。
例: 時刻設定
.CELXスクリプトではシミュレーション時刻を設定できます。時刻の設定にはユリウス日を使用します。
time = celestia:tojulianday(2007, 1, 1, 9, 0, 0)
celestia:settime(time)
tojuliandayメソッドではsettimeメソッドで使用するためのユリウス日を設定します。
引数は順に年、月、日、時、分、秒となっています。なお時刻はUTCです。
この例では日本時間の2007年1月1日0時00分00秒に設定されます。
そして次の行のsettimeメソッドでシミュレーション時刻が設定されます。
celestia:goto、celestia:settimeも参照してください。
例: 表示設定
Celestiaにおける様々な表示のON・OFFを設定します。
celestia:show("orbits", "boundaries", "grid")
celestia:hide("cometails", "lightdelay")
showメソッドでは表示をONにします。hideメソッドでは表示をOFFにします。
以上の例では軌道、星座境界線、天球座標をONにし、彗星の尾、光速考慮をOFFにしています。
celestia:show、celestia:hideも参照してください。
celestia:showlabel("planets", "moons")
celestia:hidelable("comets", "asteroids")
同様にshowlabelメソッドとhidelabelメソッドで天体名表示をON・OFFにできます。
以上の例では惑星名、衛星名をONにし、彗星名、小惑星名をOFFにしています。
celestia:showlabel、celestia:hidelabelも参照してください。
トップページ > .CELXスクリプトガイド > .CELXスクリプトの作成方法