systme/ui: add global ARC_POINT_COUNT and ARC_ANGLES to DriverState (#35415)

optimize arc rRendering with Pre-computed values
pull/35418/head
Dean Lee 3 weeks ago committed by GitHub
parent 79f3f30c63
commit 6ece69610b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 11
      system/ui/onroad/driver_state.py

@ -27,6 +27,9 @@ ARC_THICKNESS_EXTEND = 12.0
SCALES_POS = np.array([0.9, 0.4, 0.4], dtype=np.float32)
SCALES_NEG = np.array([0.7, 0.4, 0.4], dtype=np.float32)
ARC_POINT_COUNT = 37 # Number of points in the arc
ARC_ANGLES = np.linspace(0.0, np.pi, ARC_POINT_COUNT, dtype=np.float32)
@dataclass
class ArcData:
"""Data structure for arc rendering parameters."""
@ -57,8 +60,8 @@ class DriverStateRenderer:
# Pre-allocate drawing arrays
self.face_lines = [rl.Vector2(0, 0) for _ in range(len(DEFAULT_FACE_KPTS_3D))]
self.h_arc_lines = [rl.Vector2(0, 0) for _ in range(37)] # 37 points for horizontal arc
self.v_arc_lines = [rl.Vector2(0, 0) for _ in range(37)] # 37 points for vertical arc
self.h_arc_lines = [rl.Vector2(0, 0) for _ in range(ARC_POINT_COUNT)]
self.v_arc_lines = [rl.Vector2(0, 0) for _ in range(ARC_POINT_COUNT)]
# Load the driver face icon
self.dm_img = gui_app.texture("icons/driver_face.png", IMG_SIZE, IMG_SIZE)
@ -218,9 +221,7 @@ class DriverStateRenderer:
)
# Pre-calculate arc points
start_rad = np.deg2rad(start_angle)
end_rad = np.deg2rad(start_angle + 180)
angles = np.linspace(start_rad, end_rad, 37)
angles = ARC_ANGLES + np.deg2rad(start_angle)
center_x = x + arc_data.width / 2
center_y = y + arc_data.height / 2

Loading…
Cancel
Save