Programming C, C++, Java, PHP, Ruby, Turing, VB
Computer Science Canada 
Programming C, C++, Java, PHP, Ruby, Turing, VB  

Username:   Password: 
 RegisterRegister   
 Perfect Circle - Circle Collision Detection
Index -> Programming, Turing -> Turing Tutorials
Goto page Previous  1, 2, 3  Next
View previous topic Printable versionDownload TopicRate TopicSubscribe to this topicPrivate MessagesRefresh page View next topic
Author Message
MichaelM




PostPosted: Fri Jun 27, 2008 10:42 am   Post subject: Re: Perfect Circle - Circle Collision Detection Worth a look

Wow Zylum, great tutorial. You've really come up with a great way of doing circle collision detection, which looks complicated, but it all makes so much sense.

However, I'm having a bit of trouble figuring out what you've done for circle collision reaction. I'm a little lost with some of the variables you're using in the collision procedure. Could you, or anyone else who understands it all, tell me whats going on with nx,ny and p. Also, I'm not sure I understand what vxp and vyp are being used for.

code:

proc collide (var b1, b2 : BallData)
    var nx := (b1.x - b2.x) / (b1.r + b2.r)
    var ny := (b1.y - b2.y) / (b1.r + b2.r)
    var a1 := b1.vx * nx + b1.vy * ny
    var a2 := b2.vx * nx + b2.vy * ny
    var p := 2 * (a1 - a2) / (b1.m + b2.m)

    b1.vxp := b1.vx - p * nx * b2.m
    b1.vyp := b1.vy - p * ny * b2.m

    b2.vxp := b2.vx + p * nx * b1.m
    b2.vyp := b2.vy + p * ny * b1.m
end collide
Sponsor
Sponsor
Sponsor
sponsor
Soundman




PostPosted: Tue Jul 29, 2008 4:32 am   Post subject: Re: Perfect Circle - Circle Collision Detection

code:

proc collide (var b1, b2 : BallData)
    var nx := (b1.x - b2.x) / (b1.r + b2.r)     - the normalised vector in the x direction
    var ny := (b1.y - b2.y) / (b1.r + b2.r)     - the normalised vector in the y direction
    var a1 := b1.vx * nx + b1.vy * ny          - 1st ball impulse
    var a2 := b2.vx * nx + b2.vy * ny          - 2nd ball impulse
    var p := 2 * (a1 - a2) / (b1.m + b2.m)    - resultant impulse

    b1.vxp := b1.vx - p * nx * b2.m              - ball1 resultant Vx value
    b1.vyp := b1.vy - p * ny * b2.m              - ball1 resultant Vy value

    b2.vxp := b2.vx + p * nx * b1.m              - ball2 resultant Vx value
    b2.vyp := b2.vy + p * ny * b1.m              - ball2 resultant Vy value
end collide
Georgey Boy




PostPosted: Thu Nov 13, 2008 3:38 pm   Post subject: RE:Perfect Circle - Circle Collision Detection

Hi, i am working on the same thing in C#...

Great Solutions zylum!!! thank you...helps a lot!!!

So I need help...

I have an array of class Ball...
each ball has PointF positon; PointF vector;

I have timer that ticks...) So each time...
position += vector * time //well it looks different due to PointF class specs...but that what it does

I already figure out how to move balls away from each other in case of collision...

Now I need to figure out vectors after collision...

I am wondering about some vars...

b1.vxp := b1.vx - p * nx * b2.m - ball1 resultant Vx value
b1.vyp := b1.vy - p * ny * b2.m - ball1 resultant Vy value

What is b2.m? is it center or middle or mass? what if mass is the same? or it does not matter?

Also b2.vxp... Crying or Very sad
[Gandalf]




PostPosted: Thu Nov 13, 2008 9:19 pm   Post subject: RE:Perfect Circle - Circle Collision Detection

I believe ball.m is the area of the ball, from a quick glance at the code, since it's initialized to:
code:
Math.PI * balls (i).r ** 2

Edit: Oh, as for p, it could be momentum if I'm remembering my physics correctly. Don't quote me on it though!
Edit2: Ah right, it's impulse, change in momentum. Just read the post directly above yours. It's all coming back now. Smile
Georgey Boy




PostPosted: Sat Nov 15, 2008 4:09 pm   Post subject: RE:Perfect Circle - Circle Collision Detection

thank you [Gandalf] fo responce...

now I see that mass is just its area...
nevertheless i new what p was...I was wondering about b1.vxp...

Plus I wondering what this code does...is it wall collision?

if balls (i).x < 1 or balls (i).x > maxx then
balls (i).vxp *= -1
end if
if balls (i).y < 1 or balls (i).y > maxy then
balls (i).vyp *= -1
end if
SNIPERDUDE




PostPosted: Sat Nov 15, 2008 4:31 pm   Post subject: RE:Perfect Circle - Circle Collision Detection

Yes.
S_Grimm




PostPosted: Sat Nov 15, 2008 5:40 pm   Post subject: RE:Perfect Circle - Circle Collision Detection

Great Tutorial.
+Karama
DanielG




PostPosted: Sun Nov 16, 2008 10:25 am   Post subject: RE:Perfect Circle - Circle Collision Detection

yes, I might try to implenet it, so far I only used simple circle collision (the bad kind).
Sponsor
Sponsor
Sponsor
sponsor
corriep




PostPosted: Tue Nov 25, 2008 5:31 pm   Post subject: RE:Perfect Circle - Circle Collision Detection

WOW, just WOW

great tutorial, +bits

Could you explain the collision procedure.

I tried to follow it but it went way above my head!
matt271




PostPosted: Sun Apr 05, 2009 1:45 pm   Post subject: RE:Perfect Circle - Circle Collision Detection

i like ur method, but its pretty complicated.
did u come up w/ this urself??

i have come up w/ my own method i would like to show u and maybe get ur input on.

i posted it here (its in java) http://compsci.ca/v3/viewtopic.php?t=20676
carlessr




PostPosted: Sat Jan 30, 2010 2:49 pm   Post subject: Re: Perfect Circle - Circle Collision Detection

Fantastic tutorial, however i have a question.

If I were to give one of the circles infinite mass (ie a mass of 0) then the Collision Response function doesn't seem to work.

Is this intentional?
SNIPERDUDE




PostPosted: Sat Jan 30, 2010 3:21 pm   Post subject: RE:Perfect Circle - Circle Collision Detection

What wins: an unstoppable force, or an unmovable object?
How can one determine the physics of an object with no defined mass? Even if we say it is extremely minute, or extremely large values, they are still given values.
carlessr




PostPosted: Sun Jan 31, 2010 6:13 am   Post subject: Re: Perfect Circle - Circle Collision Detection

I take your point.

I was just wondering if I could rearrange the applycollision to zero out a force if the mass was zero.
SNIPERDUDE




PostPosted: Sun Jan 31, 2010 3:03 pm   Post subject: RE:Perfect Circle - Circle Collision Detection

You could make an exception perhaps.
SNIPERDUDE




PostPosted: Tue Feb 02, 2010 9:37 pm   Post subject: RE:Perfect Circle - Circle Collision Detection

SPAM.
Display posts from previous:   
   Index -> Programming, Turing -> Turing Tutorials
View previous topic Tell A FriendPrintable versionDownload TopicRate TopicSubscribe to this topicPrivate MessagesRefresh page View next topic

Page 2 of 3  [ 34 Posts ]
Goto page Previous  1, 2, 3  Next
Jump to:   


Style:  
Search: