Code: Select all
Nebula "Nebula"
{
Mesh "Nebula.*"
Radius <--- Light years?
RA <--- Common to decimals?
Dec <--- Common to decimals?
Distance <--- Light years?
}
Code: Select all
Nebula "Nebula"
{
Mesh "Nebula.*"
Radius <--- Light years?
RA <--- Common to decimals?
Dec <--- Common to decimals?
Distance <--- Light years?
}
Code: Select all
-- Title: Display current decimal for observer
KM_PER_LY = 9460730472580.8;
KM_PER_AU = 149597870.7;
PI = math.pi
degToRad = PI / 180;
J2000Obliquity = 23.4392911 * degToRad
LOOK = celestia:newvector(0, 0, -1);
earth = celestia:find("Sol/Earth")
-- Convert coordinates from cartesian to polar:
xyz2rtp = function (x, y, z)
local r = math.sqrt(x*x + y*y + z*z)
local phi = math.atan2(y, x)
local theta = math.atan2(math.sqrt(x * x + y * y), z)
return r, theta, phi
end
-- Return current distance of observer from Earth:
getR = function (obs)
local d = (earth:getposition():distanceto(obs:getposition()))
return d
end
-- Return current RA, Dec for observer:
getRADec = function (obs)
local base_rot = celestia:newrotation(celestia:newvector(1, 0, 0), -J2000Obliquity)
local rot = earth:getposition():orientationto(obs:getposition(), LOOK) * base_rot
local look = rot:transform(LOOK):normalize()
local r, theta, phi = xyz2rtp(look.x, look.z, look.y)
local phi = math.mod(720 - math.deg(phi), 360)
local theta = math.deg(theta)
if theta > 0 then
theta = 90 - theta
else
theta = (-90 - theta)
end
return phi, theta
end
km2Unit =
function(km)
local sign, value, units
--if not (type(km) == "number") then return km end;
if km < 0 then sign = -1 else sign = 1 end;
km = math.abs(km);
value = km / KM_PER_LY
units = "ly";
return string.format("%.5f",sign*value).." "..units;
end
deg2str = function(deg)
return string.format("%0.6f deg", deg);
end
while true do
obs = celestia:getobserver()
obsR = getR(obs)
obsRA, obsDec = getRADec(obs)
celestia:print(obsR..' '..obsRA..' '..obsDec)
if obsR >= 0 then
-- Display geocentric coordinates for observer:
obsRStr = km2Unit(obsR);
obsRAStr = deg2str(obsRA);
obsDecStr = deg2str(obsDec);
celestia:print("Geocentric coordinates for observer:\nR: "..obsRStr.."\nRA: "..obsRAStr.."\nDec: "..obsDecStr, 1, -1, -1, 1, 7);
end
wait(0)
end
Code: Select all
-- Title: Display current position for observer nebulas
KM_PER_LY = 9460730472580.8;
KM_PER_AU = 149597870.7;
PI = math.pi
degToRad = PI / 180;
J2000Obliquity = 23.4392911 * degToRad
LOOK = celestia:newvector(0, 0, -1);
earth = celestia:find("Sol/Earth")
-- Convert coordinates from cartesian to polar:
xyz2rtp = function (x, y, z)
local r = math.sqrt(x*x + y*y + z*z)
local phi = math.atan2(y, x)
local theta = math.atan2(math.sqrt(x * x + y * y), z)
return r, theta, phi
end
-- Return current distance of observer from Earth:
getR = function (obs)
local d = (earth:getposition():distanceto(obs:getposition()))
return d
end
-- Return current RA, Dec for observer:
getRADec = function (obs)
local base_rot = celestia:newrotation(celestia:newvector(1, 0, 0), -J2000Obliquity)
local rot = earth:getposition():orientationto(obs:getposition(), LOOK) * base_rot
local look = rot:transform(LOOK):normalize()
local r, theta, phi = xyz2rtp(look.x, look.z, look.y)
local phi = math.mod(720 - math.deg(phi), 360)
local theta = math.deg(theta)
if theta > 0 then
theta = 90 - theta
else
theta = (-90 - theta)
end
return phi, theta
end
km2Unit =
function(km)
local sign, value, units
--if not (type(km) == "number") then return km end;
if km < 0 then sign = -1 else sign = 1 end;
km = math.abs(km);
value = km / KM_PER_LY
units = "ly";
return string.format("%.5f",sign*value).." "..units;
end
deg2str = function(deg)
return string.format("%0.6f deg", deg);
end
while true do
obs = celestia:getobserver()
obsR = getR(obs)
obsRA, obsDec = getRADec(obs)
celestia:print(obsR..' '..obsRA..' '..obsDec)
if obsR >= 0 then
-- Display geocentric coordinates for observer:
obsRStr = km2Unit(obsR);
obsRAStr = deg2str(obsRA / 15);
obsDecStr = deg2str(obsDec);
celestia:print("Geocentric coordinates for observer:\nR: "..obsRStr.."\nRA: "..obsRAStr.."\nDec: "..obsDecStr, 1, -1, -1, 1, 7);
end
wait(0)
end
Verz Veraldi wrote:Reiko,
You mean if i open those script in celestia, when i go to a star or something i can see the location in the info text in the upper left?