I need to determine if an object is moving, but filter out small movements.
I figure getting the speed of the object would be: speed = (curPos - lasPos) * elapsedTime.
I’m not sure how to do this in code as the difference in positions would still return a Vec3 and not a single value to multiply it by the elapsed time.
Once I have the speed, I could filter out small movements by: if speed > 1: objectMoving = True
I think you want the length of the vector: (curPos - lasPos).length() * elapsedTime
Thanks. Is there any equivalent for Hpr - how much the object has rotated over time?
You could save your current and last rotation as quaternions. There’s even a handy method for the comparison:
curRot = np.getQuat() # np is your NodePath object
if curRot.almostSameDirection(lasRot, threshold): …
lasRot = curRot