トップページ > .CELXスクリプトガイド > オブジェクト生成

オブジェクト生成


celestia:getobserver


observer celestia:getobserver()
現在の視点のobserverオブジェクトを取得します。
observerオブジェクトに関するコマンドを使用する際に頻繁に使われます。
例:
obs = celestia:getobserver()
obs:goto(celestia:find"(Sol/Earth")) -- 地球へ移動

celestia:getobservers


table celestia:getobservers() 1.3.2
現在使われているobserverオブジェクトをテーブルで取得します。
例:
-- 現在の画面の数を取得(いくつに分割されているか)
t = celestia:getobservers()
celestia:flash(table.getn(t) .. " view(s) now.")

celestia:newvector


vector celestia:newvector(number:x, number:y, number:z)
vectorオブジェクトを作成します。
x: vectorオブジェクトのx成分。単位は[マイクロ光年(10-6光年)]。
y: vectorオブジェクトのy成分。単位は[マイクロ光年(10-6光年)]。
z: vectorオブジェクトのz成分。単位は[マイクロ光年(10-6光年)]。
例:
--

celestia:newposition


position celestia:newposition(number:x, number:y, number:z)
positionオブジェクトを作成します。
x: positionオブジェクトのx成分。単位は[マイクロ光年(10-6光年)]。
y: positionオブジェクトのy成分。単位は[マイクロ光年(10-6光年)]。
z: positionオブジェクトのz成分。単位は[マイクロ光年(10-6光年)]。
例:
--

celestia:newposition


position celestia:newposition(number:x, number:y, number:z)
positionオブジェクトを作成します。cel://URLで使用されているBase64エンコードを使用して設定できます。
x: positionオブジェクトのx成分。
y: positionオブジェクトのy成分。
z: positionオブジェクトのz成分。
例:
--

celestia:newrotation(ベクトル引数)


rotation celestia:newrotation(vector:axis, number:w)
rotationオブジェクトを作成します。
axis: rotationオブジェクトのベクトル成分。vectorオブジェクトで指定します。
w: rotationオブジェクトの実数。数値で指定します。
例:
-- 地球上のある地点(三鷹)に移動し、地平線を正面に
obs = celestia:getobserver() -- observerオブジェクトを取得
earth = celestia:find("Sol/Earth") -- 地球のobjectオブジェクトを取得
celestia:select(earth) -- 地球を選択
obs:synchronous(earth) -- 地球に自転同期で追尾
obs:gotolonglat(earth,math.rad(139.541), math.rad(35.6725), earth:radius()+0.05, 5) -- 三鷹へ移動
wait(6) -- 移動時間の5秒+一息つく1秒
v = celestia:newvector(1, 0, 0) -- vectorオブジェクトを生成
rot = celestia:newrotation(v, -math.pi/2) -- rotationオブジェクトを生成
obs:rotate(rot) -- 地平線が正面(空が上)になるように回転

celestia:newrotation(数値引数)


rotation celestia:newrotation(number:w, number:x, number:y, number:z)
rotationオブジェクトを作成します。
w: rotationオブジェクトのw成分。
x: rotationオブジェクトのx成分。
y: rotationオブジェクトのy成分。
z: rotationオブジェクトのz成分。
四元数を使用してrotationオブジェクトを作成します。
同じ結果を出したい場合、この値はベクトルを引数とした場合の値とは異なります。
例:
-- 地球上のある地点(三鷹)に移動し、地平線を正面に
obs = celestia:getobserver() -- observerオブジェクトを取得
earth = celestia:find("Sol/Earth") -- 地球のobjectオブジェクトを取得
celestia:select(earth) -- 地球を選択
obs:synchronous(earth) -- 地球に自転同期で追尾
obs:gotolonglat(earth,math.rad(139.541), math.rad(35.6725), earth:radius()+0.05, 5) -- 三鷹へ移動
wait(6) -- 移動時間の5秒+一息つく1秒
rot = celestia:newrotation(1,-1,0,0) -- rotationオブジェクトを生成
obs:rotate(rot) -- 地平線が正面(空が上)になるように回転

celestia:newframe


frame celestia:newframe(string:coordsysname[, object:ref, object:target])
frameオブジェクトを作成します。
coordsysname: frameオブジェクトでの追尾モード。
指定できるモードは次の通りです。
指定する文字列対応する追尾モード
universal(天体無指定)
eclipticFollow(春分点同期)
equatorial(無し)
planetographicSync Orbit(自転同期)
observer(無し)
lockLock(2天体同期)
chaseChase(公転同期)
ref: 参照天体。指定する追尾モードがuniversalの場合は必要ありません。
target: 目的天体。指定する追尾モードがlockの時以外は必要ありません。
例:
--

トップページ > .CELXスクリプトガイド > 時間