If I m not wrong, "fixed time step" means, that instead of the ball goes forward speed px and then test the circle line collision, you do something like this
for (a = 0; a < n; a++)
{
ballX += cos(radians(ballAngle)) * speed / n;
ballY -= sin(radians(ballAngle)) * speed / n;
if (DetectCircumpherenceCollision(ballX, ballY, bigCircleRadius) == true)
{
ballAngle = angleCircle();
}
}
n should be lower or equal than and an exact divisor of speed
this is, you part the number of px the ball scrolls per frame, in order that the collision detection is more exact, cos if not, supose the ball is 4 px from the border line, and you increase its trayectory in 8 px, what happens? the ball overpasses the circle line, and there are problems ...
with this trick, that aparently they called "fixed time step", it is like if the ball gave shorter steps, and it can bounce before ending the last of those shorter steps, in which case it scrolls the pending steps after having bounced and changed its angle, but in opposite way
that is, the collision will be tested n times instead o 1, along the distance the ball scrolls per frame, that will avoid that it overpasses the circle border line
(greater n, greater precission, in the most exact case, the shorter step's module is 1, that is n = speed)
what I called Radius, is the big circle radius, then I call ballRadius to the ball radius, but in the paddle collision function ...
About the reference signus, I'm not sure how it is in VS C++.NET, but in the ancient C/C++ it was:
(for example)
void swap(int *a, int *b)
{
int temp = *a;
*a = *b; // indirection operator *, access the value
*b = temp;
}
and you called the function
swap(&a, &b); // passing the address with the reference operator &
But I think now, using the fixed timestep, it won't be necesary to use pointers in the fuction's args (that is used to modify the values referred by them)
Keep us alert of your game's progress, and tell me if you need something else