Skip to main content

  | मौसम…

411 समाचार
Public archive edition · Attributed source reporting with original dates · AI drafts are excluded

411 REFERENCE · Wikibooks

Celestia/Celx Scripting/CELX Lua Methods/CEL command gotolonglat

Reference material by Wikibooks contributors. This retains its source identity and is not 411 news reporting.

gotolonglat gotolonglat { time <duration> distance <radiusdistance> up <upvector> longitude <longnumber> latitude <latnumber> } Go to the currently selected object, taking <duration> seconds, stopping <radiusdistance> from the object, using <upvector> orientation, positioning yourself above the specified longitude <longnumber> and latitude <latnumber> surface coordinates. Note: The gotolonglat command does not reset the coordinate system. It retains the previously set coordinate system. time <duration> The number of seconds to take going to the object. Default is 1.0 second. distance <radiusdistance> Describes how far away from the object you want to be positioned, in units of the object's radius, plus 1. Default is 5.0. Special <distance> values are: 0 (zero) is the center of the object.Note: In version 1.3.1, using this value causes the program to incorrectly recognize further positioning values, so do not use zero. 1 is the surface of the object.Note: Traveling to the exact surface level of an object may cause some graphics cards to display random polygons on the display screen, so it is best to use a value slightly above the surface. up <upvector> Defines which axis points up, X [1 0 0], Y [0 1 0] or Z [0 0 1]. Default is [0 1 0]. longitude <longnumber> This value describes the longitude surface coordinate you want to be positioned above, and should be specified as a decimal value in degrees. No default.Longitude is specified as a negative number for the Western hemisphere and as a positive number for the Eastern hemisphere (“+” sign is not necessary). latitude <latnumber> This value describes the latidude surface coordinate you want to be positioned above, and should be specified as a decimal value in degrees. No default.Latitude is specified as a negative number for the Southern hemisphere, and as a positive number for the Northern hemisphere (“+” sign is not necessary). CELX equivalent: Based on the observer:gotolonglat() method. Find the target object with name <string> to go to and store in "objectname".In CELX scripting it is not necessary to select "objectname". objectname = celestia:find( <string> ) Determine the radius of "objectname" and store in "radius". radius = objectname:radius() Determine distance in km to goto as: <radiusdistance> * "radius" and store in "distance". distance = <radiusdistance> * radius Convert <longnumber> and <latnumber> from degrees to radians by multiplying degrees with math.pi (= 3.14159265) and divide by 180. The Lua "math.rad()" function can also be used for this. longitude = math.rad( <longnumber> ) latitude = math.rad( <latnumber> ) Define a vector object, to determine which axis points up. upaxis = celestia:newvector( <upvector> ) Get observer instance of the active view and go to the "longitude" and "latitude" surface coordinates at the determined "distance" from the surface of "objectname" in <duration> seconds. If no <duration> is given, the default time is 5.0 seconds !!! If no <distance> is given, the default is 5 times the objects radius. If no <longitude> is given, the default is 0. If no <latitude> is given, the default is 0. If no <upvector> is given, the default is (0,1,0) --> Y. obs = celestia:getobserver() obs:gotolonglat(objectname, longitude, latitude, distance, <duration>, upaxis ) Wait <duration> seconds. wait( <duration> ) Summarized: objectname = celestia:find( <string> ) radius = objectname:radius() distance = <radiusdistance> * radius longitude = math.rad( <longnumber> ) latitude = math.rad( <latnumber> ) upaxis = celestia:newvector( <upvector> ) obs = celestia:getobserver() obs:gotolonglat(objectname, longitude, latitude, distance, <duration>, upaxis ) wait( <duration> ) Example:This example selects the Earth and positions the camera over Seattle, Washington, USA. CEL: select { object "Sol/Earth" } synchronous { } gotolonglat { time 5 distance 3 up [0 1 0] longitude -122 latitude 47 } print { text "Traveling to Seattle, Washington, USA." row -3 column 1 duration 5 } wait { duration 5 } print { text "Hovering over Seattle, Washington, USA." row -3 column 1 duration 5 } wait { duration 5 } CELX with observer:gotolonglat() method: earth = celestia:find("Sol/Earth") celestia:select(earth) obs = celestia:getobserver() obs:synchronous(earth) earthradius = earth:radius() earthdistance = 3 * earthradius longitude = -122 * math.pi/180 latitude = 47 * math.pi/180 upaxis = celestia:newvector(0,1,0) obs:gotolonglat(earth, longitude, latitude, earthdistance, 5.0, upvector) celestia:print("Traveling to Seattle, Washington, USA.", 5.0, -1, -1, 1, 3) wait(5.0) celestia:print("Hovering over Seattle, Washington, USA.", 5.0, -1, -1, 1, 3) wait(5.0) Back to CEL command index