Globals
Instance Methods
TAItoTDB(tai: JulianDate): JulianDate
Converts atomic time to barycentric dynamical time.
Parameters
tai(JulianDate) — Atomic time.
Returns
JulianDate
getSunPosition(jDate: JulianDate): Vec3
Returns Sun position in the geocentric coordinate system by the time.
Parameters
jDate(JulianDate) — Julian date time.
Returns
T(jd: JulianDate): number
Returns julian days from Epoch.
Parameters
jd(JulianDate) — Julian date.
Returns
number— Days from epoch
getDayNumber(year: number, month: number, day: number): number
Gets the date's julian day.
Parameters
year(number) — Year.month(number) — Month.day(number) — Day.
Returns
number— Day number
DateToUTC(date: Date): JulianDate
Converts javascript date to the universal(UTC) julian date.
Parameters
date(Date) — Date.
Returns
JulianDate— UTC julian date
DateToTAI(date: Date): JulianDate
Converts javascript date to the atomic(TAI) julian date.
Parameters
date(Date) — Date.
Returns
JulianDate— TAI julian date
UTCtoTAI(jd: JulianDate): JulianDate
Converts coordinated universal(UTC) julian date to atomic(TAI) julian date.
Parameters
jd(JulianDate) — UTC julian date.
Returns
JulianDate— TAI julian date
TAItoUTC(tai: JulianDate): JulianDate | undefined
Converts atomic julian date(TAI) to the coordinated universal(UTC) julian date.
Parameters
tai(JulianDate) — TAI julian date.
Returns
JulianDate | undefined— UTC julian date
UTCtoDate(utc: JulianDate): Date
Converts UTC julian date to the javascript date object.
Parameters
utc(JulianDate) — UTC julian date.
Returns
Date— JavaScript Date object
TAItoDate(tai: JulianDate): Date
Converts TAI julian date to the javascript date object.
Parameters
tai(JulianDate) — TAI julian date.
Returns
Date— JavaScript Date object
addMilliseconds(
jd: JulianDate,
milliseconds: number,
): JulianDate
Adds milliseconds to the julian date.
Parameters
jd(JulianDate) — Julian date.milliseconds(number) — Milliseconds to add.
Returns
JulianDate— Julian date
addSeconds(jd: JulianDate, seconds: number): JulianDate
Adds seconds to the julian date.
Parameters
jd(JulianDate) — Julian date.seconds(number) — Seconds to add.
Returns
JulianDate— Julian date
addHours(jd: JulianDate, hours: number): JulianDate
Adds hours to the julian date.
Parameters
jd(JulianDate) — Julian date.hours(number) — Hours to add.
Returns
JulianDate— Julian date
addMinutes(jd: JulianDate, minutes: number): JulianDate
Adds minutes to the julian date.
Parameters
jd(JulianDate) — Julian date.minutes(number) — Minutes to add.
Returns
JulianDate— Julian date
addDays(jd: JulianDate, days: number): JulianDate
Adds days to the julian date.
Parameters
jd(JulianDate) — Julian date.days(number) — Days to add.
Returns
JulianDate— Julian date
getMilliseconds(jd: JulianDate): number
Gets milliseconds of a julian date.
Parameters
jd(JulianDate) — julian date.
Returns
number— Milliseconds
getSeconds(jd: JulianDate): number
Gets seconds of a julian date.
Parameters
jd(JulianDate) — julian date.
Returns
number— Seconds
getHours(jd: JulianDate): number
Gets hours of a julian date.
Parameters
jd(JulianDate) — julian date.
Returns
number— Hours
getMinutes(jd: JulianDate): number
Gets minutes of a julian date.
Parameters
jd(JulianDate) — julian date.
Returns
number— Minutes
getDays(jd: JulianDate): number
Gets days of a julian date.
Parameters
jd(JulianDate) — julian date.
Returns
number— Days
secondsToDays(s: number): number
Returns days in seconds.
Parameters
s(number) — Seconds.
Returns
number— Days
daysToSeconds(d: number): number
Returns seconds in days.
Parameters
d(number) — Days.
Returns
number— Seconds
formatDate()
Formats a date by a template, e.g. "MM/dd/yyyy", "hh:mm:ss.ms". Tokens: yyyy/yy year, MMM month name, MM/M month, dd/d day, hh/h hours, mm/m minutes, ss/s seconds, ms milliseconds, a/A am/pm. Case matters for M/m only. On a 12-hour clock am/pm is appended after the time unless the template places it with "a".
_entitiesConstructor(
entities: Array.<Entity> | Array.<IEntityParams>,
): Array.<Entity>
Creates entity instance array.
Parameters
entities(Array.<Entity> | Array.<IEntityParams>) — Entity array.
Returns
Array.<Entity>
parseColor()
Parses a hex, rgb, or named color string into RGBA [0..255] values.
buildColorLUT()
Builds a 256-color RGBA Lookup Table (Uint8Array of size 1024) from render options.
parseNoDataValue()
Parses and normalizes a nodata value from various representations (number, null, string "NaN", NaN, etc.).
isNoData()
Checks if a raster value represents NoData, taking NaN, null, and float precision into account.
getFastNoDataChecker()
Returns a high-performance nodata checking predicate for inner pixel loops.
getRasterMinMax()
Calculates min and max from a raster array, ignoring NaN and NoData.
createImageData()
Creates an ImageData instance with fallback for non-browser/worker/test environments.
renderSingleBandToImageData()
Renders a single band raster to an ImageData using a color LUT.
renderMultiBandToImageData()
Renders 3 separate band arrays into an RGB ImageData.
renderRgbRastersToImageData()
Converts raw RGB/RGBA raster array(s) directly to an ImageData.
forwardUTM()
Projects WGS84 LonLat degrees [lon, lat] to UTM coordinates [easting, northing] in meters.
inverseUTM()
Unprojects UTM coordinates [easting, northing] in meters to WGS84 [lon, lat] in degrees.
getProjectionHelper()
Returns a projection helper { project, unproject } if the given code is a supported UTM EPSG code (EPSG:32601-32660 or EPSG:32701-32760), or if proj4 is globally registered.
Quat(x?: Number, y?: Number, z?: Number, w?: Number): Quat
Creates Quat instance.
Parameters
x(Number, optional, default: "0.0") — The X component.y(Number, optional, default: "0.0") — The Y component.z(Number, optional, default: "0.0") — The Z component.w(Number, optional, default: "0.0") — The W component.
Returns
Vec2(x?: number, y?: number): Vec2
Vector 2d object creator.
Parameters
x(number, optional) — First value.y(number, optional) — Second value.
Returns
Vec3(x?: number, y?: number, z?: number): Vec3
Vector 3d object creator.
Parameters
x(number, optional) — Value X.y(number, optional) — Value Y.z(number, optional) — Value Z.
Returns
Vec4(x?: number, y?: number, z?: number, w?: number): Vec4
Vector 4d object creator.
Parameters
x(number, optional) — First value.y(number, optional) — Second value.z(number, optional) — Third value.w(number, optional) — Fourth value.
Returns
log(n: number, base: number): number
The log function returns the power to which the base value has to be raised to produce n.
Parameters
n(number) — Produce value.base(number) — Base value.
Returns
number
Example
log(64, 2)
//returns 6smoothstep(edge0: number, edge1: number, x: number): number
Smooth Hermite interpolation between 0 and 1, the same as GLSL smoothstep.
Parameters
edge0(number) — Lower edge.edge1(number) — Upper edge.x(number) — Source value.
Returns
number
clamp(value: number, min: number, max: number): number
Clamp the number.
Parameters
value(number) — Input number.min(number) — Minimal edge.max(number) — Maximal edge.
Returns
number
Example
clamp(12, 1, 5)
//returns 5DEG2RAD(degrees: number): number
Converts degrees value to radians.
Parameters
degrees(number) — Degree value.
Returns
number
RAD2DEG(angle: number): number
Converts radians value to degrees.
Parameters
angle(number) — Degree value.
Returns
number
isPowerOfTwo(x: number): boolean
Check the number is a power of two.
Parameters
x(number) — Input value.
Returns
boolean
nextHighestPowerOfTwo(x: number, maxValue?: number): number
Returns next value that is power of two.
Parameters
x(number) — Input value.maxValue(number, optional, default: 4096) — Maximal value.
Returns
number
randomi(min: number, max: number): number
Returns random integer number within the bounds.
Parameters
min(number, default: 0) — Minimal bound.max(number, default: 1) — Maximal bound.
Returns
number
random(min?: number, max?: number): number
Returns random number within the bounds.
Parameters
min(number, optional, default: 0) — Minimal bound.max(number, optional, default: 1) — Maximal bound.
Returns
number
degToDec(d: number, m: number, s: number, p?: boolean): number
Converts degrees value to decimal.
Parameters
d(number) — Degrees.m(number) — Minutes.s(number) — Seconds.p(boolean, optional) — Positive flag. False - default.
Returns
number
mod(m: number, n: number): number
The modulo operation that also works for negative dividends.
Parameters
m(number) — The dividend.n(number) — The divisor.
Returns
number— The remainder.
zeroTwoPI(a: number): number
Returns an angle in the range 0 <= angle <= 2Pi which is equivalent to the provided angle.
Parameters
a(number) — Angle in radians
Returns
number
step(edge: number, x: number): number
Returns 0.0 if x is smaller than edge and otherwise 1.0.
Parameters
edge(number)x(number) — Value to edge.
Returns
number
frac(x: number): number
The frac function returns the fractional part of x, i.e. x minus floor(x).
Parameters
x(number) — Input value.
Returns
number
log2(x: number): number
Returns Math.log(x) / Math.log(2)
Parameters
x(number) — Input value.
Returns
number
exp2(n: number): number
Returns two power of n.
Parameters
n(number) — Power value.
Returns
number
pow2i(n: number): number
Returns two power of integer n.
Parameters
n(number) — Integer power value.
Returns
number
slice(t: number, h1: number, h0: number): number
Returns a slice of linear interpolation t * (h1 - h0)
Parameters
t(number) — A value that linearly interpolates between the h0 parameter and the h1 parameter.h1(number) — End value.h0(number) — Start value.
Returns
number
lerp(t: number, h1: number, h0: number): number
Performs a linear interpolation.
Parameters
t(number) — A value that linearly interpolates between the h0 parameter and the h1 parameter.h1(number) — End value.h0(number) — Start value.
Returns
number
bezier3v(
t: number,
p0: Vec3,
p1: Vec3,
p2: Vec3,
p3: Vec3,
): Vec3
Performs a 3D bezier interpolation.
Parameters
t(number) — Interpolation value.p0(Vec3) — First control point.p1(Vec3) — Second control point.p2(Vec3) — Third control point.p3(Vec3) — Fourth control point.
Returns
rev(x: number): number
Clamp angle value within 360.
Parameters
x(number) — Input angle.
Returns
number
norm_lon(lon: number): number
Clamp longitude within: -180 to +180 degrees.
Parameters
lon(number) — Longitude.
Returns
number
negativePItoPI(a: number): number
Returns an angle in the range -Pi <= angle <= Pi which is equivalent to the provided angle.
Parameters
a(number) — Angle in radians.
Returns
number
solve_iteration_fixed(
f: function,
x0: number,
maxIter: number,
): number
Solve using iteration method and a fixed number of steps.
Parameters
f(function) — Equation. Used in Euler's equation(see og.orbit) solving.x0(number) — First approximation.maxIter(number) — Maximum iterations.
Returns
number
solve_iteration(
f: function,
x0: number,
err: number,
maxIter: number,
): number
Solve using iteration; terminate when error is below err or the maximum number of iterations is reached. Used in Euler's equation(see og.orbit) solving.
Parameters
f(function) — Equation.x0(number) — First approximation.err(number) — Maximal accepted error value.maxIter(number, default: 50) — Maximum iterations.
Returns
number
getAngleDirection(a, b): number
Parameters
a— First bearing angleb— Second bearing angle
Returns
number
getAngleBetweenAzimuths(a: number, b: number): number
Returns angle between two azimuths
Parameters
a(number) — First azimuth angleb(number) — Second azimuth angle
Returns
number
forward_lon(lon: number): number
Converts degrees longitude to mercator coordinate.
Parameters
lon(number) — Degrees geodetic longitude.
Returns
number
forward_lat(lat: number): number
Converts degrees latitude to mercator coordinate.
Parameters
lat(number) — Degrees geodetic latitude.
Returns
number
inverse_lon(lon: number): number
Converts mercator longitude to degrees coordinate.
Parameters
lon(number) — Mercator longitude.
Returns
number
inverse_lat(lat: number): number
Converts mercator latitude to degrees coordinate.
Parameters
lat(number) — Mercator latitude.
Returns
number
getTileX(lon: number, zoom: number): number
Returns mercator map tile grid horizontal coordinate index by geodetic longitude and zoom level. Where top left corner of the grid is 0 coordinate index.
Parameters
lon(number) — Geodetic degrees longitude.zoom(number) — Zoom level.
Returns
number
getTileY(lat: number, zoom: number): number
Returns mercator map tile grid vertical coordinate index by geodetic latitude and zoom level. Where top left corner of the grid is 0 coordinate index.
Parameters
lat(number) — Geodetic degrees latitude.zoom(number) — Zoom level.
Returns
number
forwardArray(lonlatArr: Array.<LonLat>): Array.<LonLat>
Converts geodetic coordinate array to mercator coordinate array.
Parameters
lonlatArr(Array.<LonLat>) — LonLat array to convert.
Returns
Array.<LonLat>— Converted mercator coordinates.
isVertical()
A draggable edge: the side's own when after is null, otherwise a seam inside its stack.
alongDirection()
Stacking that runs the length of a side.
acrossDirection()
Stacking that cuts a side across, so its dialogs divide its thickness.
toKeyField()
Converts a nullable key component into a stable string field.
Used by texture resource keys to make absent/default GPU parameters explicit.
Examples:
- toKeyField("fmt", undefined) => "fmt:default"
- toKeyField("wrap", null) => "wrap:default"
- toKeyField("mime", "image/png") => "mime:image/png"
The "default" value means that the texture will be created using the default behavior of Handler.createTextureDefault(...) for this parameter.
getEllipsoidHit()
Points under the screen corners, as [leftTop, rightTop, leftBottom, rightBottom].
getHorizonPointByDirection()
Returns the horizon point in the given direction: the tangency point of the line drawn from the camera to the sphere of radius radius. Seen from the sphere center, that point sits r^2 / d along the camera up axis and r * sqrt(d^2 - r^2) / d along the horizontal direction.
getFootprintBoundaryOnScreenSegment()
Search for the boundary point between a hit and a miss along a screen row.
getCameraFootprint(
camera: PlanetCamera,
screenMargin?: number,
ellipsoid?: Ellipsoid,
)
Reference surface points under the four screen corners, as [leftTop, rightTop, leftBottom, rightBottom].
Parameters
camera(PlanetCamera) — Camera to take the footprint of.screenMargin(number, optional, default: 100) — Border of the screen, in screen pixels, the corners are sampled inside of.ellipsoid(Ellipsoid, optional) — Reference surface, the planet ellipsoid by default. See CameraFootprint for one raised to the terrain under the camera.
projPerp()
Last fit measurements, for readouts and debugging.
getLeastAlignedAxis()
Fallback seed for the light space up vector, for when the preferred one turns out to be parallel to the light.
getStableLightUp()
Up vector of the light space basis, that is, how the shadow rectangle is turned around the sun direction.
getStrategyRelief()
How high the rendered terrain rises above a reference radius, and how deep it drops below it, as two positive heights.
getCasterMinZ()
Light space depth of the closest point of the caster volume, which is the footprint raised by the caster height. Only the near plane has to clear it: a caster whose shadow lands on the footprint shares the light space XY of that shadow, so it is already inside the fitted bounds sideways.
tzOffsetMinutes(tzid: string, date: Date): number
UTC offset of the zone at the given instant, minutes. DST is applied by the tzdb rules the browser ships, which the zone data deliberately does not carry: the file only stores the standard and summer offsets, not the switch dates.
Parameters
tzid(string) — IANA time zone name.date(Date) — Instant to read the offset at.
Returns
number
Instance Fields
Mat3
Mat3 factory.
Returns
Mat4
Mat4 factory.
Returns
_currPickingColor: Array.<number>
Stores current picking rgb color.
_prevPickingColor: Array.<number>
Stores previous picked rgb color.
Enums
STR2ALIGN: number
Text align options.
Properties
left(number, default: "ALIGN.LEFT")right(number, default: "ALIGN.RIGHT")center(number, default: "ALIGN.CENTER")
Units: string
Projection units: 'degrees', 'ft', 'm' or 'km'.
Properties
DEGREES(string, default: "degrees")FEET(string, default: "ft")METERS(string, default: "m")KILOMETERS(string, default: "km")
Events
load
Triggered when the current tile image has loaded before rendering.
loadend
Triggered when all tiles have loaded or loading has stopped.
#load
Triggered when current tile image has loaded before rendering.
#loadend
Triggered when all tiles have loaded or loading has stopped.
projchanged
Triggered when camera projection is changed
changerelativecenter
Triggered when a relative center is changed
predraw
Triggered before the scene frame is rendered (before render nodes).
draw
Called after the scene frame callback and before the deferred, WOIT, and forward rendering passes.
forwardpass
Triggered for forward pass
forwardpass
Triggered after all
transparentpass
Triggered for WOIT (transparency) pass
gbufferpass
Triggered for deferred opaque geometry pass
postdraw
Triggered after a scene frame is rendered (after render nodes).
resize
Triggered when the screen is resized.
resizeend
Triggered when the screen is resized.
mouseenter
Mouse enters the work screen
mouseleave
Mouse leaves the work screen
mousemove
Mouse is moving.
mousestop
Mouse is just stopped.
lclick
Mouse left button clicked.
rclick
Mouse right button clicked.
mclick
Mouse middle button clicked.
ldblclick
Mouse left button double-click.
rdblclick
Mouse right button double click.
mdblclick
Mouse middle button double click.
lup
Mouse left button up (stop pressing).
rup
Mouse the right button up (stop pressing).
mup
Mouse the middle button up (stop pressing).
ldown
Mouse left button is just pressed down (start pressing).
rdown
Mouse right button is just pressed down (start pressing).
mdown
Mouse middle button is just pressed down (start pressing).
lhold
Mouse left button is pressing.
rhold
Mouse right button is pressing.
mhold
Mouse middle button is pressing.
mousewheel
Mouse wheel is rotated.
touchstart
Triggered when touching starts.
touchend
Triggered when touching ends.
touchcancel
Triggered when touching cancel.
touchmove
Triggered when touch is move.
doubletouch
Triggered when double touch.
touchleave
Triggered when touch leaves a picked object.
touchenter
Triggered when touch enter picking an object.
draw
Triggered before globe frame begins to render.
layeradd
Triggered when a layer is added to the planet.
baselayerchange
Triggered when the base layer changes.
layerremove
Triggered when a layer is removed from the planet.
layervisibilitychange
Triggered when layer visibility changes.
rendercompleted
Triggered when all data is loaded.
terraincompleted
Triggered when all terrain data is loaded.
layerloadend
Triggered when layer data finishes loading.
terrainadd
Triggered when a terrain provider is added to the planet.
terrainremove
Triggered when a terrain provider is removed from the planet.
terrainchange
Triggered when the current terrain provider changes.
Other
PLANET_NAME_PREFIX: string
J2000_OBLIQUITY
Angle between J2000 mean equator and the ecliptic plane. 23 deg 26' 21".448 (Seidelmann, Explanatory Supplement to the Astronomical Almanac (1992), eqn 3.222-1.
AU_TO_METERS
IAU 1976 value
TDT_TAI
Terrestrial and atomic time difference.
EARTH_GRAVITATIONAL_PARAMETER
Earth gravitational parameter product of gravitational constant G and the mass M of the Earth.
SUN_GRAVITATIONAL_PARAMETER
Sun gravitational parameter product of gravitational constant G and the mass M of the Sun.
ELEMENTS_EPOCH
Epoch of the Sun orbital elements below: 1999-12-31 00:00 UT, 1.5 days before J2000.
SECONDS_PER_MILLISECOND
Seconds in millisecond.
MILLISECONDS_PER_SECOND
Milliseconds in second.
SECONDS_PER_MINUTE
Seconds in minute.
ONE_BY_SECONDS_PER_MINUTE
One by seconds in minute.
MINUTES_PER_HOUR
Minutes in hour.
HOURS_PER_DAY
Hours in day.
ONE_BY_HOURS_PER_DAY
One by hours in day.
SECONDS_PER_HOUR
Seconds in hour.
ONE_BY_SECONDS_PER_HOUR
One by seconds in hour.
SECONDS_PER_12_HOURS
Seconds in 12 hours.
MINUTES_PER_DAY
Minutes in day.
ONE_BY_MINUTES_PER_DAY
One by minutes in day.
SECONDS_PER_DAY
Seconds in day.
MILLISECONDS_PER_DAY
Milliseconds in day.
ONE_BY_MILLISECONDS_PER_DAY
One by milliseconds in day.
ONE_BY_SECONDS_PER_DAY
One by seconds in day.
DAYS_PER_JULIAN_CENTURY
Days in julian century.
DAYS_PER_JULIAN_YEAR
Days in julian year.
PICOSECOND
Seconds in picoseconds.
MODIFIED_JULIAN_DATE_DIFFERENCE
Modified julian date difference.
J2000
Julian date of 2000 year. Epoch.
SUN_DATE_THRESHOLD: number
Minimal julian date change that moves the sunlight position, about 30 seconds.
SAFE
Point types
TRACK
drawData index names
visibleExtent
This constant is deprecated and should not be used.
mars: Ellipsoid
Mars ellipsoid object.
moon: Ellipsoid
Moon ellipsoid object.
wgs84: Ellipsoid
WGS84 ellipsoid object.
GRID_MIN_SIZE
Sampling grid of a tile, source pixel positions are interpolated between its nodes.
GRID_MAX_SIZE
Finest grid, reached only by tiles that span a large part of the globe.
GRID_MAX_ERROR
Allowed interpolation error between the grid nodes, in tile pixels.
BLOCK_SIZE
Size of a cached byte range of a remote file.
BLOCK_CACHE_SIZE
Number of cached byte ranges, 512 blocks of 64 KB take about 32 MB.
WGS84_A
High precision Transverse Mercator (UTM) forward & inverse projection for WGS84 ellipsoid. Supports EPSG:32601 - EPSG:32660 (UTM North zones 1N-60N) and EPSG:32701 - EPSG:32760 (UTM South zones 1S-60S).
EULER_POLE_SIN
|sin(pitch)| above which pitch counts as vertical and the euler decomposition switches to its gimbal lock branch.
TWO_PI
PI_TWO
LOG2
MAX32
MAX
MIN
RADIANS
DEGREES
DEGREES_DOUBLE
RADIANS_HALF
ARCSECONDS_TO_RADIANS
RADIANS_TO_HOURS
HOURS_TO_RADIANS
HOURS_TO_DEGREES
DEGREES_TO_HOURS
SQRT_HALF
POLE: number
Mercator size.
POLE_DOUBLE: number
Double mercator size.
ONE_BY_POLE_DOUBLE: number
One by mercator double size.
MAX_LAT: number
Max mercator latitude.
MIN_LAT: number
Min mercator latitude.
METERS_PER_UNIT: Record.<string, number>
Meters per unit lookup table.
OPSIDE
World opposite side table.
NEIGHBOUR
First index is {N,E,S,W} and second is {NW,NE,SW,SE}
OPPART
Neighbor's oposite part. For example oposite side on the east neighbor side is: [S][SE] = NE
NOPSORD
Neighbos's opside array order. For example NW node by E side array index is 0, SE node by S side is 1.
COMSIDE
First index is {NW,NE,SW,SE}, another one is {N,E,S,W}
PARTOFFSET
Gets segment part left to right or up to downo ffset against neighbour side. Where 0 - no offset 1 - half segment size offset.
MAX_PROJECTOR_LAYERS
Maximum number of depth layers allocated in manager-owned projector array texture. Defines how many projectors can be added to the manager at once.
MAX_FORWARD_PROJECTORS
Maximum number of projectors processed in a single shader invocation. Used by forward / WOIT paths as top-K by priority per draw call. Deferred projector pass binds one projector per draw (chunkSize = 1).
DEFAULT_MAX_NODES: number
Maximum created nodes count. The more nodes count the more memory usage. When the maximum node count is exceeded, memClear() will be called.
Default: 400
DEFAULT_WIDTH
Preferred side of the anchor element a dialog opens on.
DRAG_THRESHOLD
Pixels the pointer has to move past its header press before that counts as a drag
DOCK_EVENTS
Which third of a side a dialog was dropped on, and so where it goes.
DEFAULT_EDGE_THRESHOLD
Default edgeThreshold: the band along a free edge where an unused side offers itself.
DEFAULT_SIZE
Default defaultSize: what a side opens at when the dialog it takes has no size drawn yet.
MIN_ZONE_SIZE
No side gets thinner than this, however far its seam is dragged inwards.
MIN_FREE_SIZE
What a side has to leave of the rectangle it takes from, so the sides after it still fit.
MIN_ITEM_SHARE
The least of a side a dialog stacked in it keeps, so a seam never squeezes one out of sight.
END_BAND
How much of a side's length each of its end bands takes.
SPLITTER_GRAB
What the pointer gets, centered on the gap between docked dialogs.
SPLITTER_GRAB_COARSE
A finger is blunter than a cursor and needs more of an edge to catch.
SHADOW_CASTER_RELIEF_FACTOR
How high above the footprint a caster may stand and still reach the shadow map. Raising it is cheap. It only moves the camera sunward.
SHADOW_CASTER_HEIGHT_STEPS
Controls shadow camera height snapping. A value of 1 uses 128, 256, 512 m, etc., preventing small movements every frame.
SHADOW_RECEIVER_DEPTH_PADDING
Minimum far-plane margin for terrain below the fitted receivers. fit() adds the measured terrain descent to this value.
SHADOW_ORTHO_TEXEL_PADDING
Extra border around the fitted bounds, in texels. Keeps soft-shadow samples inside the map and prevents edge artifacts.
ORTHO_TEXEL_QUANTIZATION_STEPS
Snaps the fitted extent to four size levels per doubling. Slack delays shrinking, preventing texel-grid movement and shadow shimmer. See _quantizeOrthoTexelSize().
MIN_SHADOW_ORTHO_SIZE
Smallest bounds padding and far-near gap, in world units.
DEFAULT_SRC
Zone data — a plain GeoJSON FeatureCollection:
- properties.tzid: IANA name ("Europe/Paris", "Etc/GMT+3") — what lookup returns; the bundled file also carries zone (standard offset, hours), zone_dst and utc_format.
- geometry: Polygon or MultiPolygon in lon/lat degrees, first ring outer, rest holes.
- non-overlapping, lon within [-180, 180] split at the antimeridian, lat within ±89.9 (the mercator rendering limit; ±90 breaks the triangulation). Bundled res/tz/timezones.geojson: timezone-boundary-builder with oceans, dissolved by the (standard, DST) offset pair.