So I know that the relationship between the crank throw and the stroke of a non-offset CSM is S=2R. But then I realized that when offset is introduced, the stroke length changes just a little. So I spend some time drawing diagrams and then found out that the maximum piston position for any CSM is at the angle formed by the offset @ 0 degrees CA, and minimum is just 180 degrees plus that. For example, a CSM has a Connecting Rod length of 4 and an offset of 1.5. Doing some math, we come up with Angle=Sin^-1(d/L), where L is connecting Rod length and d is offset. Our answer is approximately 22.02 degrees, and thus when the angle of the crank is 22.02 or 202.02 degrees, maximum and minimum displacement occur. Let's say this mechanism has a crank throw (radius) of 2. The equation I came up with so far is S=2R(1/cos(Z)), where S is the stroke length, R is the radius, and Z is the angle formed by the offset. Plugging in our variables, we get: S = approximately 4.315 units, but when I check it by using actual displacement functions, it differs by just a little bit!: S = 4.330. Does anyone know why this occurs? Displacement Equation: D=Rcos(X)+sqrt(L^2-(Rsin(X)-d)^2) Where X is crank angle.