angle module
AIU - holds all angle processesunknown
python
10 months ago
11 kB
10
Indexable
import math
import main_messages
from rich.console import Console
from rich.table import Table
console = Console()
# ----------------------------------------------------------------------------------------------------------------------------------#
def degrees_to_radians(deg_rad):
return deg_rad * (math.pi / 180)
def radians_to_degrees(rad_deg):
return rad_deg * (180 / math.pi)
def gradians_to_degrees(grad_deg):
return grad_deg * (9 / 10)
def dms_to_degrees(mins, secs):
return (mins / 60) + (secs / 3600)
# ----------------------------------------------------------------------------------------------------------------------------------#
def angle_conversion_menu():
main_messages.separator()
table = Table(title="", show_lines=True)
table.add_column("🔶 Angle Conversion", justify="left", style="cyan", no_wrap=True)
table.add_row("[1] Degrees ➡️ Radians")
table.add_row("[2] Radians ➡️ Degrees")
table.add_row("[3] Gradians ➡️ Degrees")
table.add_row("[4] Minutes/Seconds ➡️ Degrees")
table.add_row("[red][5] 🚪 Return to Main Menu[/red]")
console.print(table)
# ----------------------------------------------------------------------------------------------------------------------------------#
def angle_conversion_confirm():
table = Table(title="", show_lines=True)
table.add_column("ℹ️ Would you like to make another computation?", justify="left", style="cyan", no_wrap=True)
table.add_row("[1] ✅ [green]Yes[/green]")
table.add_row("[2] 🚪 [red]Return to Menu[/red]")
console.print(table)
# ----------------------------------------------------------------------------------------------------------------------------------#
def angle_5_select():
try:
console.print("[green]\n➡️ Enter your selection[/green] [[blue]1[/blue] - [blue]5[/blue]]:")
angle_select = int(input("-- "))
except ValueError:
console.print("[red]\n❌ Invalid Entry[/red]. Enter a number between 1 and 5!")
return
if angle_select < 1 or angle_select > 5:
console.print("[red]\n❌ Out of Range[/red]. Enter a number between 1 and 5!")
return
if angle_select == 5:
console.print("\n[yellow]🚪 Returning to Main Menu...[/yellow]")
main_messages.separator()
return "BACK_MAIN"
# ----------------------------------------------------------------------------------------------------------------------------------#
if angle_select == 1:
while True:
try:
main_messages.separator()
deg_rad = float(console.input("[green]➡️ Enter your degrees[/green]\n-- "))
if deg_rad == 0:
console.print("\n❌ 0 degrees is still 0 in radians!")
continue
# Checks for "s" if amount is greater than 1
main_messages.separator()
if deg_rad > 1 or deg_rad < 1:
console.print(f"\n✅ {deg_rad} degrees is {degrees_to_radians(deg_rad):.4f} in radians")
elif deg_rad == 1:
console.print(f"\n✅ {deg_rad} degree is {degrees_to_radians(deg_rad):.4f} in radians")
main_messages.separator()
except ValueError:
console.print("\n[red]\n❌ Invalid Entry[/red]. Enter a valid number.\n")
continue
while True:
angle_conversion_confirm()
main_messages.separator()
try:
return_menu = int(input("\n-- "))
if return_menu < 1 or return_menu > 2:
console.print("\n[red]❌ Out of Range[/red]. Please enter [1 or 2].")
main_messages.separator()
elif return_menu == 1:
break
elif return_menu == 2:
console.print("\n[yellow]🚪 Returning to Angle Menu... [/yellow]")
return
except ValueError:
console.print("\n[red]❌ Invalid Entry[/red]. Enter a valid number.")
main_messages.separator()
# ----------------------------------------------------------------------------------------------------------------------------------#
elif angle_select == 2:
while True:
try:
main_messages.separator()
rad_deg = float(console.input("[green]➡️ Enter your radians[/green]\n-- "))
if rad_deg == 0:
console.print("\n❌ 0 radians is still 0 in degrees!")
continue
# Checks for "s" if amount is greater than 1
main_messages.separator()
if rad_deg > 1 or rad_deg < 1:
console.print(f"\n✅ A radians of {rad_deg} is {radians_to_degrees(rad_deg):.4f} in degrees")
elif rad_deg == 1:
console.print(f"\n✅ A radian of {rad_deg} is {radians_to_degrees(rad_deg):.4f} in degrees")
main_messages.separator()
except ValueError:
console.print("\n[red]\n❌ Invalid Entry[/red]. Enter a valid number.\n")
continue
while True:
angle_conversion_confirm()
main_messages.separator()
try:
return_menu = int(input("\n-- "))
if return_menu < 1 or return_menu > 2:
console.print("\n[red]❌ Out of Range[/red]. Please enter [1 or 2].")
main_messages.separator()
elif return_menu == 1:
break
elif return_menu == 2:
console.print("\n[yellow]🚪 Returning to Angle Menu... [/yellow]")
return
except ValueError:
console.print("\n[red]❌ Invalid Entry[/red]. Enter a valid number.")
main_messages.separator()
# ----------------------------------------------------------------------------------------------------------------------------------#
elif angle_select == 3:
while True:
try:
main_messages.separator()
grad_deg = float(console.input("[green]➡️ Enter your gradian[/green]\n-- "))
if grad_deg == 0:
console.print("\n❌ 0 gradian is still 0 in degrees!")
continue
# Checks for "s" if amount is greater than 1
main_messages.separator()
if grad_deg > 1 or grad_deg < 1:
console.print(f"\n✅ {grad_deg} Gradians is {gradians_to_degrees(grad_deg):.4f} in degrees")
elif grad_deg == 1:
console.print(f"\n✅ {grad_deg} Gradian is {gradians_to_degrees(grad_deg):.4f} in degrees")
main_messages.separator()
except ValueError:
console.print("\n[red]\n❌ Invalid Entry[/red]. Enter a valid number.\n")
continue
while True:
angle_conversion_confirm()
main_messages.separator()
try:
return_menu = int(input("\n-- "))
if return_menu < 1 or return_menu > 2:
console.print("\n[red]❌ Out of Range[/red]. Please enter [1 or 2].")
main_messages.separator()
elif return_menu == 1:
break
elif return_menu == 2:
console.print("\n[yellow]🚪 Returning to Angle Menu... [/yellow]")
return
except ValueError:
console.print("\n[red]❌ Invalid Entry[/red]. Enter a valid number.")
main_messages.separator()
# ----------------------------------------------------------------------------------------------------------------------------------#
elif angle_select == 4:
while True:
try:
main_messages.separator()
mins = float(console.input("[green]➡️ Enter your minutes[/green]\n-- "))
secs = float(console.input("[green]➡️ Enter your seconds[/green]\n-- "))
if mins == 0 and secs == 0:
console.print("\n❌ Both minutes and seconds cannot be zero! Enter a valid value!")
continue
if mins < 0 and secs < 0:
console.print("\n❌ Both minutes and seconds cannot be negative! Enter a valid value!")
continue
if mins < 0 and secs >= 0:
console.print("\n❌ Minutes cannot be negative! Enter a valid value!")
continue
if mins >= 0 and secs < 0:
console.print("\n❌ Seconds cannot be negative! Enter a valid value!")
continue
main_messages.separator()
min_label = "minute" if mins == 1 else "minutes"
sec_label = "second" if secs == 1 else "seconds"
console.print(f"\n✅ {mins} {min_label}, and {secs} {sec_label} is {dms_to_degrees(mins, secs):.4f} degrees")
main_messages.separator()
except ValueError:
console.print("\n[red]❌ Invalid Entry[/red]. Enter a valid number.")
continue
while True:
angle_conversion_confirm()
main_messages.separator()
try:
return_menu = int(input("\n-- "))
if return_menu < 1 or return_menu > 2:
console.print("\n[red]❌ Out of Range[/red]. Please enter [1 or 2].")
main_messages.separator()
elif return_menu == 1:
break
elif return_menu == 2:
console.print("\n[yellow]🚪 Returning to Angle Menu... [/yellow]")
return
except ValueError:
console.print("\n[red]❌ Invalid Entry[/red]. Enter a valid number.")
main_messages.separator()
Editor is loading...
Leave a Comment