Basic models for space and fixtures

This commit is contained in:
Maximilian Giller 2025-09-12 22:30:31 +02:00
parent 30ac7031c1
commit 91deb3fc20

56
src/models.py Normal file
View file

@ -0,0 +1,56 @@
from dataclasses import dataclass
from enum import Enum
@dataclass
class SpaceVector:
"""A 3-dimensional coordinate structure with clear orientation."""
lr: float
"""Left-to-Right."""
tb: float
"""Top-to-Bottom."""
fb: float
"""Front-to-Behind."""
class Capabilities(Enum):
SWITCH = "switch"
BRIGHTNESS = "brightness"
TEMPERATURE = "temperature"
COLOR = "color"
@dataclass
class Fixture:
"""Definition of a fixture that generates light, its capabilities and positioning."""
id: str
"""Unique identifier for fixture."""
capabilities: Capabilities
"""Which dynamic capabilities does the fixture have."""
position: SpaceVector
"""Position of the fixture in the space in meters."""
target: SpaceVector
"""Position of the light generated by the ficture in the space in meters."""
spread: SpaceVector
"""Spread of the light in the space at the target in meters."""
exposure: float
"""In range [0,1], how exposed is the light source of the fixture. 0: no exposure. 1: full exposure."""
@dataclass
class Space:
"""A space containing fixtures."""
id: str
"""Unique identifier for space."""
fixtures: list[Fixture]
"""All fixtures present in the space."""
center: SpaceVector
"""A reference point in the space from which the audience perspective might be assumed."""