32 lines
716 B
Python
32 lines
716 B
Python
from dataclasses import dataclass
|
|
from typing import Optional
|
|
|
|
from geometry.ray import Ray
|
|
from geometry.vector import Vector
|
|
|
|
|
|
@dataclass
|
|
class Surface:
|
|
refraction_index: float
|
|
|
|
def __and__(self, v: Vector) -> bool:
|
|
"""
|
|
Does this point lie on the surface itself?
|
|
"""
|
|
raise NotImplementedError()
|
|
|
|
def __contains__(self, v: Vector) -> bool:
|
|
"""
|
|
Is this point _inside_ the region of space, separated by this surface?
|
|
"""
|
|
raise NotImplementedError()
|
|
|
|
def normal_at(self, v: Vector) -> Vector:
|
|
raise NotImplementedError()
|
|
|
|
def intersect(self, ray: Ray) -> Optional[float]:
|
|
raise NotImplementedError()
|
|
|
|
def draw2d(self, plt, **kwargs):
|
|
raise NotImplementedError()
|