import taichi as ti
import numpy as np

@ti.dataclass
class Sinusoid:
    amp: float
    freq: float
    bias: float

    @ti.func
    def z(self, t: float) -> float:
        return self.amp*ti.sin(self.freq*2*np.pi * t) + self.bias