Jump to content

Trying to make pinball using OpenGL the collision detection I am using in the code is not working at all 

The collision detection i have implemented is in the layout.cpp and all the variables used is in ball.cpp(i have attached files with it)

I am using this formula to find the shortest distance of ball from the line:-

distance = |(p - a) * (p - b)| / |b - a|

( * operator used in the equation is cross product )

where p is position vector of center of ball , a and b are position vectors of endpoints of a line

please share if anyone have any other way of detecting collision in CPP.

layout.txt

ball.txt

9ff77faa33b1e9e4acc4bdec5cbde7d4.png

My PC specs :- CPU i7- 8700k, Motherboard Maximus XI Hero,  RAM 32 GB Gskill Trident Z RGB, GPU Asus Rog Strix RTX 2080 , Case Phanteks enthoo evolv atx - tg edition, Storage 2 TB Seagate baracuda + 512GB samsung SSD, PSU corsair RMX 1000 Watt Gold PSU, Display(s) Acer Predator Z271U 27" WQHD Curved and Benq Zowie XL 2456, Cooling Asus ROG RYUO 240.

 

My Laptop :- Lenovo Y50-70 -CPU i7- 4710HQ, RAM 16 GB , GPU Gtx 860m 4GB, Storage 1TB HDD + 128GB SSD

Link to comment
https://linustechtips.com/topic/1003321-collision-detection-using-opengl/
Share on other sites

Link to post
Share on other sites

The cross product only makes sense in 3d space.

 

You might have misread this answer; the formula you need is

 

[(p - a) . (p - b)] / |b - a|2

 

Where . is the dot product; this gives you the projection of the point on the line extended from the segment; you can then clamp the projection to the segment and work out the distance between that and the point.

image.png

Don't ask to ask, just ask... please 🤨

sudo chmod -R 000 /*

Link to post
Share on other sites

I did some 2D graphics using STD DRAW and when I did collision I only really worried about circles. 

Basically to stop from going to the edge I did

 


If (location + radius >= screen width)

//bounce. 

 

I did have a few other things but I don’t recall what I did. If I have the files, I’ll post what I did. Java is close enough to C++ that you’ll understand what's going on. 

 

Edit 

I saw some books for cheap on amazon about 2D collision. Might be worth it. 

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×