# Block Breaker , ANGLE calcution HELP!

This topic is 3027 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

## Recommended Posts

i try to make brick breaker game. i got 1 problem that the ball doesn't bounce correctly i thought for 2 days and i don't get the answer that i can understand from internet i use this fomula ball.x = sin(angle)*speed; ball.y = cos(angle)*speed; angle is in radian value; and whatever the ball hits, the angle will mutiply by minus which i think it gonna work but when i hit the wall not the brick the ball doesn't bounce and move like parallel. can someone tell me how to calculate the opposite site properly? Please. this is my assignment that i have to finish now

##### Share on other sites
you don't negate the angle, but you negate either x or y depending on what wall you hit.

if(hit left or right wall) ball.x = -ball.x;
if(hit up or down wall) ball.y = -ball.y;
angle = atan2(x, y);

##### Share on other sites
Of course, if you keep ball.x and ball.y, there's no point in keeping an angle...

##### Share on other sites
Quote:
 Original post by oliiiyou don't negate the angle, but you negate either x or y depending on what wall you hit.if(hit left or right wall) ball.x = -ball.x;if(hit up or down wall) ball.y = -ball.y;angle = atan2(x, y);

thanks for your help, i gonna try it
but i just want to learn.

i don't understand about what you wrote "angle = atan2(x, y);"

atan2??what is it? arctan? 2??
how can i use it?

##### Share on other sites
Try googling "atan2"...it's quite helpful.

##### Share on other sites
Quote:
 Original post by GregMichaelTry googling "atan2"...it's quite helpful.

well,
atan2 will make me get the opposite angle
it the reverse value of tan.

however, i try to apply for the program, it won't work

angle = atan2(ball.y,ball.x); // atan2 value is already radian
ball.x += sinf(angle)* speedX;
ball.y += cosf(angle)* speedY;

when the wall hit up or down -> speedY *(-1)
when the wall hit left or right -> speedX *(-1)

it doesn't work
when the ball hit block/brick , the ball move backward and
not collide to the bar....confused

i want to make this game work by some physic or math
because i can apply for another game too

##### Share on other sites
you don't have to bother with angles. just negate the x or the y when you hit a wall or a side of a brick. The angle can be useful at the initial start to initialise the x and y, but after, it's overkill.

##### Share on other sites
Quote:
 Original post by oliiiyou don't have to bother with angles. just negate the x or the y when you hit a wall or a side of a brick. The angle can be useful at the initial start to initialise the x and y, but after, it's overkill.

but it the ball hit the edge of the brick......
how can i do?
i understand your point and i agree with you
however, the next step that i want to try is billard game
so i want to know how to get the reflect angle

##### Share on other sites
When you do billiards, you'll also be better off not using angles. If you have an incoming vector and a normal vector and you want to compute a reflected vector, you can do that with simple vector arithmetic. The formula is something like this:
reflected = incoming - 2*dot_product(incoming, normal)*normal

##### Share on other sites
I don't know your maths level, but vector maths are pretty easy. for the very basics, see here.

Vector, triginometry, arithmetics, algebra, calculus, geometry, cartesian and polar coordinates, it's pretty much A-level maths, and that's 90% of collision detection and physics (the simple kind!) sorted. Vectors, matrices and geometrical properties being used extensively.

1. 1
Rutin
25
2. 2
3. 3
JoeJ
19
4. 4
5. 5

• 10
• 11
• 9
• 9
• 10
• ### Forum Statistics

• Total Topics
631752
• Total Posts
3002094
×