MCPcopy Create free account
hub / github.com/Tong89/smartNode / _slant_range_km

Function _slant_range_km

backend/orbit.py:277–306  ·  view source on GitHub ↗

计算卫星到目标点斜距 (km),用于链路预算。 使用球面几何近似: d = √((alt_sat - alt_tgt)² + (R_E·sin(angle))²) Parameters ---------- sat_pos : dict 卫星位置,含 lat/lon/alt (alt 单位 m)。 target_pos : dict 目标位置,含 lat/lon/alt (alt 单位 m)。 Returns ------- float 斜距 (km)。

(sat_pos, target_pos)

Source from the content-addressed store, hash-verified

275
276
277def _slant_range_km(sat_pos, target_pos) -> float:
278 """计算卫星到目标点斜距 (km),用于链路预算。
279
280 使用球面几何近似:
281 d = √((alt_sat - alt_tgt)² + (R_E·sin(angle))²)
282
283 Parameters
284 ----------
285 sat_pos : dict
286 卫星位置,含 lat/lon/alt (alt 单位 m)。
287 target_pos : dict
288 目标位置,含 lat/lon/alt (alt 单位 m)。
289
290 Returns
291 -------
292 float
293 斜距 (km)。
294 """
295 R_E = 6371.0 # km
296 angle = calc_central_angle(
297 sat_pos["lat"], sat_pos["lon"],
298 target_pos["lat"], target_pos["lon"],
299 )
300 alt_sat_km = sat_pos["alt"] / 1000.0
301 alt_tgt_km = target_pos.get("alt", 0.0) / 1000.0
302 dist = math.sqrt(
303 (alt_sat_km - alt_tgt_km) ** 2
304 + (R_E * math.sin(math.radians(angle))) ** 2
305 )
306 return max(dist, 1.0) # 最小 1 km,防止除零
307
308
309def calculate_direct_rate(sat_pos, gs, data_type=None):

Callers 3

calculate_direct_rateFunction · 0.85
calculate_relay_rateFunction · 0.85

Calls 2

calc_central_angleFunction · 0.85
getMethod · 0.45

Tested by

no test coverage detected