don't abandon me
Loki66

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

Edgar Reynaldo

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?

jmasterx

I'd guess Italian

Mark Oates

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. :)

Edgar Reynaldo

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....

BitCruncher

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 :-/.

Mark Oates

They're here.

I wouldn't be surprised if most of them are reading this right now.

Onewing

In the shadows, they wait, growing stronger, to rise yet again.

Mark Oates

Fuk yuh

Onewing in the house.

Bam, what you been up to?

Rodolfo Lam

From time to time you can see people in the online users tab. They just don’t talk or prefer not to.

Loki66

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

jmasterx
Loki66 said:

Hi Edgar Reynaldo, I'm italian.

No weigh! :o

Mark Oates

Wow Loki66, that is one killer tutorial! Nice find! And thanks for sharing. :)

Edgar Reynaldo
jmasterx said:

No weigh! :o

He doesn't weigh anything?!

Mark Oates

He doesn't weigh anything?!

Weight a minute! 🤔

Loki66

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

Edgar Reynaldo

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.

bamccaig

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. :)

Edgar Reynaldo

The .cbp projects are purely for my convenience. I just haven't gotten around to writing a CMakeLists.txt for Merlin yet. :P

Loki66

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

Thread #617960. Printed from Allegro.cc