一些有用的公式

翻译自esi-docs/docs/useful_formulae.md at master · esi/esi-docs · GitHub

跃迁落地点

跃迁落地点,指的是你的舰船在跃迁至一个物体时将要在太空中退出跃迁通道的位置。
许多外部因素可能会中止跃迁,例如跃迁扰断力场、电容量不足、跃迁抖动等等。
这些公式不能解决这些问题,它仅仅计算在理想条件下的数值。

普通目标

普通目标是不属于以下描述的任何其他类别的任何目标。
使用三维向量 p_d p_s ​分别表示目标的位置和跃迁起点。 \vec{v} 是一个从 p_s p_d ​的方向向量。使用 r 表示对象的半径。
目标的跃迁落地点是向量 p_s + \vec{v} - r\hat{v}

大目标

大目标是除行星外,半径超过90千米(直径180千米)的任何目标。
使用 x , y z 表示目标的坐标。使用 r 表示目标的半径。
目标的跃迁落地点是向量 \left(x + (r + 5000000)\cos{r} \\, y + 1.3r - 7500 \\, z - (r + 5000000)\sin{r} \\ \right)

行星

行星的跃迁落地点由行星的ID,位置和半径确定。
使用 x , y z 表示行星的坐标。使用 r 表示行星的半径。
行星的跃迁落地点是向量 \left(x + d \sin{\theta}, y + \frac{1}{2} r \sin{j}, z - d \cos{\theta}\right) ,其中:

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}

现在, j 是一朵特别的雪花。它的值用Python表示是 (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))

技能点

每级技能点需求

每级技能点需求取决于它的技能分级。

y_{skillpoints} = 2^{2.5(x_{skilllevel}-1)} \cdot 250 \cdot r_{skillrank}

一般技能分级的技能点需求

分级 等级 1 等级 2 等级 3 等级 4 等级 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

每分钟技能点

每分钟生成的技能点的数量取决于该技能的主要属性 (a_{primary}) 和次要属性 (a_{secondary})

y_{skillpointsPerMinute} = a_{primary} + {a_{secondary} \over 2}

战斗

目标锁定时间

目标锁定时间 t_{targetlock} 取决于舰船的扫描分辨率 s 和目标的信号半径 r

t_{targetlock} = {40000 \over s \cdot asinh(r)^2}

转向时间

舰船朝向时间 t_{align} 取决于舰船的惯性调整值 i 和舰船的质量 m

t_{align} = { ln(2) \cdot i \cdot m \over 500000 }