import math def ik(side, x, y, z): c = 20 f = 80 t = 130 ff = f*f tt = t*t print() print(f"ik {side} {x} {y} {z}") if side == 'l': x = -x coxa_angle = math.atan2(y,x) r = math.sqrt(x*x + y * y) - c print(f"r: {r}") rr = r*r zz = z*z dd = rr + zz d = math.sqrt(dd) print(f"coxa_angle: {coxa_angle}") femur_angle = math.acos((ff + dd - tt) / (2 * f * d)) + math.acos(-z/d) - math.pi/2 print(f"femur_angle: {femur_angle}") tibia_angle = math.acos((tt + ff - dd) / (2 * t * f)) - math.pi/2 print(f"tibia_angle: {tibia_angle}") return(coxa_angle, femur_angle, tibia_angle) print(ik('l', -100, 0, -130)) print(ik('r', 100, 0, -130)) print(ik('l', -120, 0, -130)) print(ik('r', 120, 0, -130))