(let* ((collisionObjOrig (getUpdatedPosition collisionObj timeDiff))
(dist-allowed (+ (obj 'getRadius) (collisionObj 'getRadius)))
(dist-after-collision ((objOrig 'getDistance) collisionObjOrig))
(dist-before-collision (((obj 'getOrigin) 'getDistance) (collisionObj 'getOrigin)))
(overlap (- dist-allowed dist-after-collision))
(scalar (/ (- dist-before-collision dist-allowed) (- dist-before-collision overlap)))
(oldOrig (obj 'getOldOrigin))
(oldCollisionOrig (collisionObj 'getOldOrigin))
(origin ((oldOrig 'getNewOrigin) (((obj 'getSpeedVec) 'vec*) scalar) timeDiff))
(otherOrig ((oldCollisionOrig 'getNewOrigin) (((collisionObj 'getSpeedVec) 'vec*) scalar) timeDiff))