Hello to all
nobody answers my threads (see problems with collision algorithm)
I want to learn and I would like to contribute to this site.
Don't abandon me
Loki66, as you may have noticed, there aren't many people left on this site to answer your question.
I've seen it, but collision detection can be quite the involved discussion.
I was going to post my solution, but it doesn't always work. Circle circle collision can be very complicated. Of course a simple overlap check will work for low velocities, but not for high velocity. I have the opposite problem, my intercept based detection algorithm works well for high velocity, but not low velocity.
You can view my intercept library Merlin here :
https://github.com/EdgarReynaldo/Merlin
EDIT
The main intercept calculation is done in Intercept.cpp :
https://github.com/EdgarReynaldo/Merlin/blob/master/src/Intercept.cpp
Also, as I said, it can be a very involved discussion.
May I ask, what is your native language?
I'd guess Italian
Circle circle is not very intuitive to grasp at first.
The best solution I know of requires subdividing the frame's timestep (usually a frame's timestep is 1/60 per second). The technique involves calculating all the collision times for all of the circles in that timeframe, finding the smallest sub-step in that frame, moving time forward up to the sub-step and changing the trajectories of those two colliding circles.
At that point, you may have some "remainder" time in your frame. Rinse and repeat until you have used the entire 1/60 timestep.
That accounts for all circle sizes, all velocities, can handle all the multiple sub-collisions and reactions that can occur within a frame, and is actually quite performant!
I could go into the math involved in "calculating all the collision times for all of the circles in that timeframe" if anybody's interested. It's actually a really fun algo to implement.
In my Merlin library I used a collision table. (N x N-1)/2 pairs of possible collisions. When you calculate an intercept it never changes unless the object's velocity or acceleration change, so no need to recalculate it. Simply sort the collision times ascending on time and apply in order. Each time a collision occurs, you need to recheck both objects entries in the collision table, resort, advance time, etc....
This kinda begs the (probably already asked) question: Where the heck is everybody? I guess they just moved on? I remember when this place was happening .
They're here.
I wouldn't be surprised if most of them are reading this right now.
In the shadows, they wait, growing stronger, to rise yet again.
Fuk yuh
Onewing in the house.
Bam, what you been up to?
From time to time you can see people in the online users tab. They just don’t talk or prefer not to.
Hi Edgar Reynaldo, I'm italian.
I tried to compile your Merlin projects, but it gives me errors because it can't find allegro.h in *.hpp header
#include "allegro5/allegro.h"
I tried to modify include
#include <allegro5/allegro.h>
but he does not find it the same
in the * .cpp source files there is no problem. Why?
I found a site that looks interesting:
https://www.toptal.com/game/video-game-physics-part-ii-collision-detection-for-solid-objects
Thank you all for your help
Hi Edgar Reynaldo, I'm italian.
No weigh!
Wow Loki66, that is one killer tutorial! Nice find! And thanks for sharing.
No weigh!
He doesn't weigh anything?!
He doesn't weigh anything?!
Weight a minute! 🤔
Hello to all
thanks Mark Oates, the tutorial is divided on three web pages.
What is interesting for collisions is towards the end of page 2 where there is the collision algorithm:
Continuous Collision Detection.
Edgar my English is not good, I also started using visual basic in 2018 and
C ++ in early 2019. I'm a beginner!
I thank you for the patience you have
jmasterx you guessed my nationality, good boy
I would like to ask SiegeLord if it is possible to have the mouse coordinates, event.mouse.dx and event.mouse.dy float format.
It would be great for games like "air hockey", the vectors created by moving the mouse would be accurate
Loki66 - I showed you Merlin so you could get an idea of the code. If you want to build it you'll need to edit the .cbp projects to change the include and linker search directories to find allegro.
Bam, what you been up to?
Mostly avoiding hard work, consuming mind altering substances, and fearing impending doom. Meanwhile, my wife keeps steering us toward a normal life so I'm probably going to end up knocking her up within a single gesture of available "receptivity" and then wish to goodness sakes I could still afford, let alone be socially allowed to be, fucking rekt.
Cannabis has been legal in Canada for a year now. Shouldn't you be baked right now too?!
Append:
My post was pretty derailey, but in my defense also pretty baited. Let me see if I can contribute something:
If you want to build it you'll need to edit the .cbp projects to change the include and linker search directories to find allegro.
I feel like this is a major failing of any IDE. There needs to be a shared configuration, and it needs to know of "environmental variables" and help the user to figure those out. To me editing a CBP would be like editing the Makefile. If I need to edit the Makefile then you fucked up. I might need to override some settings in my environment, for example, but I shouldn't need to edit the Makefile.
I think that's mostly a symptom of Windows, but perhaps it has contaminated GUI's in general. I avoid GUI's. Good commands cannot be beaten.
The .cbp projects are purely for my convenience. I just haven't gotten around to writing a CMakeLists.txt for Merlin yet.
Hello to all
I made an algorithm from an equation I found on this site:
https://www.toptal.com/game/video-game-physics-part-ii-collision-detection-for-solid-objects
Attached there is a "word" file in which there is the algorithm and a folder with the program in which two circles move and collide (02 Algoritmi.rar).
If anyone wants to try it, can you tell me if it's ok or not?
Edgar Reynaldo, I ran your projects and read them, but I don't know C ++ enough to understand your program.
We don't kill this site