A warp-in point is where your ship will land in space when warping to an object.
Many external factors may disrupt a warp, e.g. warp disruption fields, insufficient electrical capacity, warp jitter, etc.; these formulas do not account for these phenomenas, they assume perfect conditions.
An ordinary object is any object that does not fall withing any of the other categories described below.
Let the 3D vectors $ p_d $
and $ p_s $
represent the object’s position and the warp’s origin, respectively; and $ \vec{v} $
the directional vector from $ p_s $
to $ p_d $
. Let $ r $
be the object’s radius.
The object’s warp-in point is the vector $ p_s + \vec{v} - r\hat{v} $
.
A large object is any celestial body whose radius exceeds 90 kilometres (180 kilometres in diameter), except planets.
Let $ x $
, $ y $
, and $ z $
represent the object’s coordinates. Let $ r $
be the object’s radius.
The object’s warp-in point is the vector $ \left(x + (r + 5000000)\cos{r} \\,
y + 1.3r - 7500 \\,
z - (r + 5000000)\sin{r} \\ \right). $
The warp-in point of a planet is determined by the planet’s ID, its location, and radius.
Let $ x $
, $ y $
, and $ z $
represent the planet’s coordinates. Let $ r $
be the planet’s radius.
The planet’s warp-in point is the vector $ \left(x + d \sin{\theta}, y + \frac{1}{2} r \sin{j}, z - d \cos{\theta}\right) $
where:
d = r(s + 1) + 1000000
\theta = \sin^{-1}\left(\frac{x}{|x|} \cdot \frac{z}{\sqrt{x^2 + z^2}}\right) + j
s|_{0.5 \leq s \leq 10.5} = 20\left(\frac{1}{40}\left(10\log_{10}\left(\frac{r}{10^6}\right) - 39\right)\right)^{20} + \frac{1}{2}
Now, $ j $
is a special snowflake. Its value is the Python equivalent of
(random.Random(planetID).random() - 1.0) / 3.0
.
import math
import random
def warpin(id, x, y, z, r):
j = (random.Random(id).random() - 1.0) / 3.0
t = math.asin(x/abs(x) * (z/math.sqrt(x**2 + z**2))) + j
s = 20.0 * (1.0/40.0 * (10 * math.log10(r/10**6) - 39))**20.0 + 1.0/2.0
s = max(0.5, min(s, 10.5))
d = r*(s + 1) + 1000000
return (x + d * math.sin(t), y + 1.0/2.0 * r * math.sin(j), z - d * math.cos(t))
The skillpoints needed for a level depend on the skill rank.
y_{skillpoints} = 2^{2.5(x_{skilllevel}-1)} \cdot 250 \cdot r_{skillrank}
Rank | Level 1 | Level 2 | Level 3 | Level 4 | Level 5 |
---|---|---|---|---|---|
1 | 250 | 1.414 | 8.000 | 45.254 | 256.000 |
2 | 500 | 2.828 | 16.000 | 90.509 | 512.000 |
3 | 750 | 4.242 | 24.000 | 135.764 | 768.000 |
4 | 1.000 | 5.656 | 32.000 | 181.019 | 1.024.000 |
5 | 1.250 | 7.071 | 40.000 | 226.274 | 1.280.000 |
6 | 1.500 | 8.485 | 48.000 | 271.529 | 1.536.000 |
7 | 1.750 | 9.899 | 56.000 | 316.783 | 1.792.000 |
8 | 2.000 | 11.313 | 64.000 | 362.038 | 2.048.000 |
9 | 2.250 | 12.727 | 72.000 | 407.293 | 2.304.000 |
10 | 2.500 | 14.142 | 80.000 | 452.548 | 2.560.000 |
11 | 2.750 | 15.556 | 88.000 | 497.803 | 2.816.000 |
12 | 3.000 | 16.970 | 96.000 | 543.058 | 3.072.000 |
13 | 3.250 | 18.384 | 104.000 | 588.312 | 3.328.000 |
14 | 3.500 | 19.798 | 112.000 | 633.567 | 3.584.000 |
15 | 3.750 | 21.213 | 120.000 | 678.822 | 3.840.000 |
16 | 4.000 | 22.627 | 128.000 | 724.077 | 4.096.000 |
The skillpoints generated each minute depend on the primary $ (a_{primary}) $
and secondary attribute $ (a_{secondary}) $
of the skill.
y_{skillpointsPerMinute} = a_{primary} + {a_{secondary} \over 2}
The target lock time ($ t_{targetlock} $
) in seconds depends on the ship’s scan resolution ($ s $
) and the target’s signature radius ($ r $
)
t_{targetlock} = {40000 \over s \cdot asinh(r)^2}
The ship alignment time ($ t_{align} $
) depends on the ship’s inertia modifier ($ i $
) and the ships mass ($ m $
)
t_{align} = { ln(2) \cdot i \cdot m \over 500000 }