nbody/main.py
2025-01-02 00:05:16 +13:00

46 lines
721 B
Python
Executable file

#!./venv/bin/python
import argparse
import typing
import data
import physics
class Args:
filename: str
gravity: float
dimensions: typing.Literal[2, 3]
if __name__ == "__main__":
parser = argparse.ArgumentParser(
prog="n-body simulation",
description="Simulating gravitational effects"
)
parser.add_argument(
"-f",
"--filename",
default="data/2d/simple.csv"
)
parser.add_argument(
"-g",
"--gravity",
type=float,
default=1.
)
parser.add_argument(
"-d",
"--dimensions",
type=int,
choices=[2, 3],
default=2
)
args: Args = parser.parse_args()
physics.G = args.gravity
objects = data.parse_csv(args.filename, dimensions=args.dimensions)
a = data.Animator(*objects)
a.show()