los_palette / los_palette.py
forrestfwilliams's picture
Upload 2 files
da30a1f
raw
history blame contribute delete
No virus
1.44 kB
import numpy as np
def angles_to_unit_vector(heading_angle_degrees, grazing_angle_degrees, left_looking=True):
# Convert angles to radians
heading_angle_start_at_east = 90 - heading_angle_degrees
look_offset = 90 if left_looking else -90
heading_los = heading_angle_start_at_east + look_offset
heading_angle_radians = np.radians(heading_los)
grazing_angle_sensor_to_ground = -(90 - grazing_angle_degrees)
grazing_angle_radians = np.radians(grazing_angle_sensor_to_ground)
# Calculate the vector components
x_component = np.cos(heading_angle_radians) * np.cos(grazing_angle_radians)
y_component = np.sin(heading_angle_radians) * np.cos(grazing_angle_radians)
z_component = np.sin(grazing_angle_radians)
# Create a NumPy array for the vector
vector = np.array([x_component, y_component, z_component])
# Normalize the vector to obtain the unit vector
unit_vector = (vector / np.linalg.norm(vector)).round(5)
return unit_vector
def unit_vector_to_hex(unit_vector):
centered_rgb = (unit_vector + 1) * 127.5
r, g, b = centered_rgb.round(0).astype(int)
hex_color = f'#{r:02X}{g:02X}{b:02X}'
return hex_color
def angles_to_hex(heading_angle_degrees, incidence_angle_degrees, left_looking=True):
unit_vector = angles_to_unit_vector(heading_angle_degrees, incidence_angle_degrees, left_looking)
hex = unit_vector_to_hex(unit_vector)
return hex