Module curvepy.sin
Expand source code
import math
from .curve import Curve, MIN_STEP
from intervalpy import Interval
class Sin(Curve):
@property
def frequency(self):
return self.x_coef / math.pi * 0.5
@property
def period(self):
return math.pi * 2 / self.x_coef
def get_domain(self):
return Interval.infinite()
def __init__(self, amplitude=None, frequency=None, period=None, phase=0, phase_x=None):
super().__init__()
self.set(amplitude=amplitude, frequency=frequency, period=period, phase=phase, phase_x=phase_x)
def set(self, amplitude=None, frequency=None, period=None, phase=0, phase_x=None):
self.begin_update(self.domain)
self.amplitude = amplitude
self.phase = phase
self.x_coef = None
if period is not None:
frequency = 1.0 / period
if frequency is not None:
self.x_coef = frequency * math.pi * 2.0
if phase_x is not None:
self.phase = phase_x * self.x_coef
if self.amplitude is None or self.x_coef is None or self.phase is None:
raise Exception("Invalid sin function description")
self.end_update(self.domain)
def y(self, x):
return self.amplitude * math.sin(self.x_coef * x + self.phase)
def d_y(self, x, forward=False, min_step=MIN_STEP, limit=None):
return self.amplitude * math.cos(self.x_coef * x + self.phase)
Classes
class Sin (amplitude=None, frequency=None, period=None, phase=0, phase_x=None)
-
Expand source code
class Sin(Curve): @property def frequency(self): return self.x_coef / math.pi * 0.5 @property def period(self): return math.pi * 2 / self.x_coef def get_domain(self): return Interval.infinite() def __init__(self, amplitude=None, frequency=None, period=None, phase=0, phase_x=None): super().__init__() self.set(amplitude=amplitude, frequency=frequency, period=period, phase=phase, phase_x=phase_x) def set(self, amplitude=None, frequency=None, period=None, phase=0, phase_x=None): self.begin_update(self.domain) self.amplitude = amplitude self.phase = phase self.x_coef = None if period is not None: frequency = 1.0 / period if frequency is not None: self.x_coef = frequency * math.pi * 2.0 if phase_x is not None: self.phase = phase_x * self.x_coef if self.amplitude is None or self.x_coef is None or self.phase is None: raise Exception("Invalid sin function description") self.end_update(self.domain) def y(self, x): return self.amplitude * math.sin(self.x_coef * x + self.phase) def d_y(self, x, forward=False, min_step=MIN_STEP, limit=None): return self.amplitude * math.cos(self.x_coef * x + self.phase)
Ancestors
Instance variables
var frequency
-
Expand source code
@property def frequency(self): return self.x_coef / math.pi * 0.5
var period
-
Expand source code
@property def period(self): return math.pi * 2 / self.x_coef
Methods
def d_y(self, x, forward=False, min_step=1e-05, limit=None)
-
Expand source code
def d_y(self, x, forward=False, min_step=MIN_STEP, limit=None): return self.amplitude * math.cos(self.x_coef * x + self.phase)
def get_domain(self)
-
Expand source code
def get_domain(self): return Interval.infinite()
def set(self, amplitude=None, frequency=None, period=None, phase=0, phase_x=None)
-
Expand source code
def set(self, amplitude=None, frequency=None, period=None, phase=0, phase_x=None): self.begin_update(self.domain) self.amplitude = amplitude self.phase = phase self.x_coef = None if period is not None: frequency = 1.0 / period if frequency is not None: self.x_coef = frequency * math.pi * 2.0 if phase_x is not None: self.phase = phase_x * self.x_coef if self.amplitude is None or self.x_coef is None or self.phase is None: raise Exception("Invalid sin function description") self.end_update(self.domain)
def y(self, x)
-
Expand source code
def y(self, x): return self.amplitude * math.sin(self.x_coef * x + self.phase)
Inherited members