46 lines
721 B
Python
Executable file
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()
|