defaultStartTime = -1.0
defaultStartForce = 4.0
defaultEndTime = 2.0
defaultEndForce = -2.0
def linearForce(time, startTime, startForce, endTime, endForce):
localTime_a = time - startTime
localTime_b = time
if (time < 0):
return startForce + (localTime_a * startForce/startTime)
elif (time == 0):
return 0
else:
return (localTime_b * endForce/endTime)
def linearForceVelocity(time, startTime, startForce, endTime, endForce):
localTime_a = time - startTime
localTime_b = time
if (time < 0):
return localTime_a * (startForce + (1/2) * (localTime_a * startForce/startTime))
elif (time == 0):
return 1/2 * -startTime * startForce
else:
return 1/2 * -startTime * startForce + 1/2 * endForce/endTime * localTime_b^2
def linearForceDisplacement(time, startTime, startForce, endTime, endForce):
localTime_a = time - startTime
localTime_b = time
if (time < 0):
return localTime_a^2 * ((1/2) * startForce + (1/6) * localTime_a * (startForce/startTime))
elif (time == 0):
return (-startTime)^2 * ((1/2) * startForce + (1/6) * -startTime * (startForce/startTime))
else:
return (-startTime)^2 * ((1/2) * startForce + (1/6) * -startTime * (startForce/startTime)) + (localTime_b * 1/2 * -startTime * startForce) + (1/6 * endForce/endTime * localTime_b^3)
def linearForceSingleVariable(n):
return linearForce(n, defaultStartTime , defaultStartForce ,defaultEndTime, defaultEndForce)
def linearForceVelocitySingleVariable(n):
return linearForceVelocity(n, defaultStartTime , defaultStartForce ,defaultEndTime, defaultEndForce)
def linearForceDisplacementSingleVariable(n):
return linearForceDisplacement(n, defaultStartTime , defaultStartForce ,defaultEndTime, defaultEndForce)
linearForcePlot = plot(linearForceSingleVariable, defaultStartTime, defaultEndTime,rgbcolor=hue(0.5))
linearForceVelocityPlot = plot(linearForceVelocitySingleVariable, defaultStartTime, defaultEndTime,rgbcolor=hue(0.1))
linearForceDisplacementPlot = plot(linearForceDisplacementSingleVariable, defaultStartTime, defaultEndTime,rgbcolor=hue(0.3))
show (linearForcePlot + linearForceVelocityPlot + linearForceDisplacementPlot)