Erstveröffentlichung Weihnachten 2024
This commit is contained in:
85
pages/skyview.py
Normal file
85
pages/skyview.py
Normal file
@@ -0,0 +1,85 @@
|
||||
"""
|
||||
|
||||
Satelliteninfos
|
||||
|
||||
- Sat mit Fix: ausgefüllter Kreis
|
||||
- Sat ohne fix: leerer Kreis
|
||||
- Slots für 12 SNR-Balken
|
||||
|
||||
"""
|
||||
|
||||
import cairo
|
||||
import math
|
||||
from .page import Page
|
||||
|
||||
class SkyView(Page):
|
||||
|
||||
def __init__(self, pageno, cfg, boatdata):
|
||||
super().__init__(pageno, cfg, boatdata)
|
||||
|
||||
def pol2cart(azimuth, elevation):
|
||||
'''
|
||||
Polar to Cartesian coordinates within the horizon circle.
|
||||
azimuth in radians
|
||||
x = math.sin(azimuth) * elevation * self.radius
|
||||
y = math.cos(azimuth) * elevation * self.radius
|
||||
'''
|
||||
pass
|
||||
# (x, y) = self.pol2cart(sat.az, sat.el)
|
||||
|
||||
def draw(self, ctx):
|
||||
|
||||
# Name
|
||||
ctx.select_font_face("Ubuntu", cairo.FontSlant.NORMAL, cairo.FontWeight.BOLD)
|
||||
#ctx.set_font_size(32)
|
||||
#self.draw_text_center(ctx, 200, 40, "Satellite Info")
|
||||
|
||||
# Spezialseite
|
||||
cx = 130
|
||||
cy = 150
|
||||
r = 125
|
||||
r1 = r / 2
|
||||
|
||||
ctx.set_line_width(1.5)
|
||||
ctx.arc(cx, cy, r, 0, 2*math.pi)
|
||||
ctx.stroke()
|
||||
ctx.arc(cx, cy, r1, 0, 2*math.pi)
|
||||
ctx.stroke()
|
||||
ctx.set_dash([4, 4], 0)
|
||||
ctx.move_to(cx, cy - r)
|
||||
ctx.line_to(cx, cy + r)
|
||||
ctx.move_to(cx - r, cy)
|
||||
ctx.line_to(cx + r, cy)
|
||||
ctx.stroke()
|
||||
ctx.set_dash([], 0)
|
||||
|
||||
# Signal/Noise Balken
|
||||
ctx.set_font_size(16)
|
||||
ctx.move_to(325, 34)
|
||||
ctx.show_text("SNR")
|
||||
ctx.stroke()
|
||||
|
||||
ctx.set_line_width(1.5)
|
||||
ctx.rectangle(270, 20, 125, 257)
|
||||
|
||||
# Beispieldaten
|
||||
ctx.set_line_width(0.5)
|
||||
for s in range(12):
|
||||
y = 30 + (s + 1) * 20
|
||||
ctx.move_to(275, y)
|
||||
ctx.show_text(f"{s:02d}")
|
||||
ctx.rectangle(305, y-12, 85, 14)
|
||||
ctx.stroke()
|
||||
|
||||
ctx.set_line_width(1.0)
|
||||
for s in self.bd.sat.values():
|
||||
x = cx + math.sin(s.azimuth) * s.elevation * r
|
||||
y = cy + math.cos(s.azimuth) * s.elevation * r
|
||||
ctx.arc(x, y, 4, 0, 2*math.pi)
|
||||
ctx.move_to(x+4, y+4)
|
||||
ctx.show_text(f"{s.prn_num}")
|
||||
ctx.stroke()
|
||||
|
||||
# Satellitenliste mit SNR-Balken sortiert nach nummer
|
||||
for prn_num in sorted(self.bd.sat):
|
||||
print(prn_num)
|
||||
Reference in New Issue
Block a user