Team Ai
Apppublic

dizolivemint/motion-encoder-decoder

sourceHugging Facemitupdated 1y agoView on Hugging Face
0likes
config.py77 linesDownload Raw Back to root
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}")