Delete orbiter/orbits/calc.py
This commit is contained in:
parent
abf652adab
commit
9ba4da4db3
@ -1,84 +0,0 @@
|
||||
import numpy as np
|
||||
import sys
|
||||
from decimal import Decimal
|
||||
from time import time
|
||||
|
||||
from ..units import HighPrecisionMatrix
|
||||
|
||||
def calculate_distances(positions):
|
||||
N = len(positions)
|
||||
dists = HighPrecisionMatrix(N,N)
|
||||
for i in range(N):
|
||||
dists[i][i] = Decimal(0)
|
||||
for j in range(i+1, N):
|
||||
d = sum([x**2 for x in (positions[i]-positions[j])]).sqrt()
|
||||
dists[i][j] = Decimal(d)
|
||||
dists[j][i] = Decimal(d)
|
||||
return dists
|
||||
|
||||
def calculate_distances_np(positions):
|
||||
positions = np.array(positions)
|
||||
diffs = positions[:, np.newaxis] - positions[np.newaxis, :]
|
||||
dists = np.linalg.norm(diffs, axis=-1)
|
||||
np.fill_diagonal(dists, 0)
|
||||
return dists
|
||||
|
||||
def print_progress_bar(iteration, total, start_time, length=50):
|
||||
"""Prints a progress bar to the console."""
|
||||
percent = (iteration / total) * 100
|
||||
filled_length = int(length * iteration // total)
|
||||
bar = '#' * filled_length + '-' * (length - filled_length)
|
||||
sys.stdout.write(f'\r[{bar}] {percent:.2f}% {int(iteration/(time()-start_time))} steps/s')
|
||||
sys.stdout.flush()
|
||||
|
||||
|
||||
def format_sig_figs(value, sig_figs):
|
||||
"""Format a number to a specified number of significant figures for printing."""
|
||||
if value == 0:
|
||||
return "0"
|
||||
return f"{value:.{sig_figs-1}e}"
|
||||
|
||||
|
||||
|
||||
def plot_points_terminal(vectors, stdscr, scale=500000, grid_width=30, grid_height=30):
|
||||
"""Plots multiple points in the terminal, scaled and centered at (0,0)."""
|
||||
stdscr.clear()
|
||||
|
||||
if not vectors:
|
||||
stdscr.addstr(0, 0, "No vectors provided.")
|
||||
stdscr.refresh()
|
||||
return
|
||||
|
||||
# Apply scaling
|
||||
scaled_vectors = {(round(vec[0] / scale), round(vec[1] / scale)) for vec in vectors}
|
||||
|
||||
# Find min and max coordinates
|
||||
min_x = min(vec[0] for vec in scaled_vectors)
|
||||
max_x = max(vec[0] for vec in scaled_vectors)
|
||||
min_y = min(vec[1] for vec in scaled_vectors)
|
||||
max_y = max(vec[1] for vec in scaled_vectors)
|
||||
|
||||
# Center offsets to keep (0,0) in middle
|
||||
center_x = (grid_width // 2) - min_x
|
||||
center_y = (grid_height // 2) - min_y
|
||||
|
||||
# Adjust coordinates for plotting
|
||||
adjusted_vectors = {(vec[0] + center_x, vec[1] + center_y) for vec in scaled_vectors}
|
||||
|
||||
# Ensure grid boundaries
|
||||
max_terminal_y, max_terminal_x = stdscr.getmaxyx()
|
||||
max_x = min(grid_width, max_terminal_x - 5)
|
||||
max_y = min(grid_height, max_terminal_y - 5)
|
||||
|
||||
# Draw grid with points
|
||||
for i in range(grid_height, -1, -1):
|
||||
row = f"{i - center_y:2} | "
|
||||
for j in range(grid_width + 1):
|
||||
row += "● " if (j, i) in adjusted_vectors else ". "
|
||||
stdscr.addstr(max_y - i, 0, row[:max_terminal_x - 1]) # Ensure no overflow
|
||||
|
||||
# Print X-axis labels
|
||||
x_labels = " " + " ".join(f"{j - center_x:2}" for j in range(max_x + 1))
|
||||
stdscr.addstr(max_y + 1, 0, x_labels[:max_terminal_x - 1]) # Avoid out-of-bounds error
|
||||
|
||||
stdscr.refresh()
|
Loading…
x
Reference in New Issue
Block a user