Help: Point hole towards object [Better explanation in post]

I have a hole in a circle like this

1FtcVtA.png

The goal is to move the opening so it is in front of the ball after every collision (forcing you to move). Recently I added an algorithm to make the ball bounce more random, but this messes up my algorithm which puts the hole on the opposite side of the ball. The hole is placed exactly in front of where the ball is when it collides with circle , so this is before I make the bounce more random. My question is how would I move the hole so that it is back directly front of the ball after the offset is added?

Video showing how the hole is off:

http://i.gyazo.com/91c0438cc6464ae056db23b845b8cedb.mp4

This Function is called immediately after the collisions to make the bounce more random:

local function tweakDir( obj ) local vx,vy = obj:getLinearVelocity() local angle = ball.currAngle + 180 --set angle to exact opposite. The hole at this --angle local len = math2d.length( vx, vy ) local rand = math.random local offset if localScore \> 10 then offset = rand(30,60) else offset = rand(30,45) end angle = angle + offset --add offset to angle angle = angle % 360 print("angle : " .. angle) local vec = math2d.angle2Vector( angle , true ) vec = math2d.normalize(vec) -- not really needed (already done by angle2Vector) vec = math2d.scale( vec, len ) obj:setLinearVelocity( vec.x, vec.y ) --rotate(?) how much should I rotate the circle so that the hole is back in front -- of the ball. end 

This is how i rotate the circle:

local function rotate(angle) for c = 1, 12 do--rotate each segment segs[c].rotation = segs[c].rotation + angle if( segs[c].rotation \< 0 ) then segs[c].rotation = segs[c].rotation + 360 end if( segs[c].rotation \>= 360 ) then segs[c].rotation = segs[c].rotation - 360 end end end