题目要求
公式推导和计算
:
__mata_class_=ABCMeta
def __init__(self,**kwargs):
self.h=kwargs.get("h")
self.Phi=kwargs.get("Phi")
@abstractmethod
def state_phi(self):
pass
class sin_travel(travel):
def __init__(self,**kwargs):
super().__init__(**kwargs)
self.push_travel=kwargs.get("push_travel")
def state_phi(self,phi):
Phi=self.Phi*math.pi/180
phi=phi*math.pi/180
if (self.push_travel):
return [self.h*(phi/Phi-math.sin(2*math.pi*phi/Phi)/(2*math.pi)),
self.h*(1-math.cos(2*math.pi*phi/Phi))/Phi,
self.h*2*math.pi*math.sin(2*math.pi*phi/Phi)/Phi**2]
else:
return [self.h*(1-phi/Phi+math.sin(2*math.pi*phi/Phi)/(2*math.pi)),
-self.h*(1-math.cos(2*math.pi*phi/Phi))/Phi,
-self.h*2*math.pi*math.sin(2*math.pi*phi/Phi)/Phi**2]
class pause_travel(travel):
def state_phi(self,phi):
return [self.h,0,0]
class cam():
def __init__(self,Law_of_motion:list,**kwarg):
self.travel=Law_of_motion
self.e=kwarg.get("e")
self.r_0=kwarg.get("r_0")
self.r_r=kwarg.get("r_r")
self.omega=kwarg.get("omega")
if(self.r_0!=None and self.e!=None):
self.s0=math.sqrt(self.r_0**2+self.e**2)
#求位移类速度类加速度
def get_motion_state_phi(self,phi)->list:
i=0
while(phi>self.travel[i].Phi):
phi-=self.travel[i].Phi
i+=1
return self.travel[i].state_phi(phi)
def get_motion_state(self,phi)->list:
def tf(i):
i+=1
return i-1
i=0
return list(map(lambda x:x*self.omega**tf(i),self.get_motion_state_phi(phi)))
def get_pressure_angle(self,phi):
state_phi=self.get_motion_state_phi(phi)
return math.atan(abs(state_phi[1]-self.e)/\
(self.s0+state_phi[0]))*180/math.pi
def get_theoretical_outline(self,phi)->tuple:
t=self.s0+self.get_motion_state_phi(phi)