dizolivemint/motion-encoder-decoder
0
1# config.py2 3from typing import List4from video_sequencer.simulate_physics import PhysicsSimulator5import os6 7# --- Input Normalization Configs ---8physics_input_configs = {9 "projectile_motion": {10 "fields": ["initial_velocity", "angle", "gravity"],11 "normalize": lambda v0, a, g: [12 v0 / 20.0,13 a / 90.0,14 g / 20.015 ],16 "denormalize": lambda x: (17 x[0] * 20.0,18 x[1] * 90.0,19 x[2] * 20.020 )21 },22 "ball_motion": {23 "fields": ["mass", "angle", "friction"],24 "normalize": lambda m, a, f: [25 m / 5.0,26 (a - 10.0) / 35.0,27 (f - 0.05) / 0.4528 ],29 "denormalize": lambda x: (30 x[0] * 5.0,31 x[1] * 35.0 + 10.0,32 x[2] * 0.45 + 0.0533 )34 }35}36 37# --- Shared Accessor Functions ---38def get_physics_types() -> List[str]:39 return list(physics_input_configs.keys())40 41def normalize_input(physics_type: str, *inputs: float) -> List[float]:42 if physics_type not in physics_input_configs:43 raise ValueError(f"Unsupported physics type: {physics_type}")44 return physics_input_configs[physics_type]["normalize"](*inputs)45 46def denormalize_input(physics_type: str, inputs: List[float]) -> List[float]:47 if physics_type not in physics_input_configs:48 raise ValueError(f"Unsupported physics type: {physics_type}")49 return physics_input_configs[physics_type]["denormalize"](inputs)50 51def get_input_fields(physics_type: str) -> List[str]:52 if physics_type not in physics_input_configs:53 raise ValueError(f"Unsupported physics type: {physics_type}")54 return physics_input_configs[physics_type]["fields"]55 56def get_simulation_fn(physics_type):57 sim = PhysicsSimulator()58 return {59 "ball_motion": sim.simulate_ball_motion,60 "projectile_motion": sim.simulate_projectile_motion61 }.get(physics_type)62 63def get_param_ranges(physics_type):64 if physics_type == "ball_motion":65 return {66 "mass": (0.5, 5.0),67 "angle": (10.0, 45.0),68 "friction": (0.05, 0.5),69 }70 elif physics_type == "projectile_motion":71 return {72 "initial_velocity": (25.0, 50.0),73 "angle": (45.0, 75.0),74 "gravity": (9.5, 10.5),75 }76 else:77 raise ValueError(f"Unknown physics type: {physics_type}")