Java-Gaming.org Hi !
 Featured games (84) games approved by the League of Dukes Games in Showcase (574) Games in Android Showcase (154) games submitted by our members Games in WIP (620) games currently in development
 News: Read the Java Gaming Resources, or peek at the official Java tutorials
Pages: [1]
 ignore  |  Print
 Rotating rectangles for collisions?  (Read 2899 times) 0 Members and 1 Guest are viewing this topic.
cubemaster21
 « Posted 2012-08-13 18:03:37 »

Just as the title says, is there any way that I can rotate the rectangle so that i can still call it for collisions? This is what I've got right now, for reference.
I have standard collisions working, but it's a real pain for corners.

Check out my game, Viking Supermarket Smash
http://www.java-gaming.org/topics/iconified/28984/view.html
UprightPath
 « Reply #1 - Posted 2012-08-13 18:15:38 »

Well, I'm pretty sure that someone else can offer you advice about the actual rotation.

However, if you just need to do the collision check in a sort of quick and dirty way? Well, that's pretty easy since you already know their positions, right?

So, you've got three sets of cases for collisions with rectangles:
1) Rotated rect's corner collides with a stationary: Check if any of the four corners appear inside of another rectangle.
2) Stationary rect's corner collides with rotated: Rotate the corner points of the stationary rect to adjust them be on the Axis Bounded to the rotated one, then check like in 1.
3) Edge collision: Only happens when the rotatable rect is rotated at angel % 90 = 0. Handled like an AABB collision.

The Cure

Senior Newbie

 « Reply #2 - Posted 2012-08-14 04:51:42 »

cubemaster21, what are you using to check the standard collisions, shape.intersects()? How are you drawing the rectangle, using the Rectangle2D class?

"A candle loses nothing by lighting another candle" - Erin Majors
cubemaster21
 « Reply #3 - Posted 2012-08-14 20:33:55 »

no, This is all with a standard Rectangle() class. And yes, for collisions, i'm using rectangle.intersects.

Check out my game, Viking Supermarket Smash
http://www.java-gaming.org/topics/iconified/28984/view.html
The Cure

Senior Newbie

 « Reply #4 - Posted 2012-08-15 03:46:33 »

no, This is all with a standard Rectangle() class. And yes, for collisions, i'm using rectangle.intersects.

Try this:

 1  2  3  4  5  6  7  8  9  10  11  12  13  14  15 `         int degree = 90; //desired degree         int rectX = 100, rectY = 100, rectWidth = 150, rectHeight = 100;         Shape rect = new Rectangle(rectX, rectY, rectWidth, rectHeight); //creating the rectangle you want to rotate         Rectangle rect2 = new Rectangle(400, 100, rectWidth, rectHeight); //creating other rectangle to check intersection         AffineTransform transform = new AffineTransform();         //rotate or do other things with the rectangle (shear, translate, scale and so on)         transform.rotate(Math.toRadians(degree), rectX + rectWidth /2, rectY + rectHeight /2); //rotating in central axis         //rect receiving the rectangle after rotate         rect = transform.createTransformedShape(rect);         g2d.draw(rect); //Graphics2D object drawing the rectangle on the screen         //and then check the intersection        if(rect.intersects(rect2)){           //Do something...        }`

"A candle loses nothing by lighting another candle" - Erin Majors
Pages: [1]
 ignore  |  Print

You cannot reply to this message, because it is very, very old.

 Riven (32 views) 2015-04-16 10:48:47 Duke0200 (43 views) 2015-04-16 01:59:01 Fairy Tailz (33 views) 2015-04-14 20:13:12 Riven (35 views) 2015-04-12 21:36:37 bus hotdog (50 views) 2015-04-10 02:39:32 CopyableCougar4 (52 views) 2015-04-10 00:51:04 BurntPizza (52 views) 2015-04-06 22:06:58 ags1 (54 views) 2015-04-02 10:58:48 Riven (53 views) 2015-04-01 18:27:05 ags1 (70 views) 2015-03-31 10:55:12
 theagentd 27x BurntPizza 17x wessles 15x 65K 11x kingroka123 11x Rayvolution 11x alwex 11x KevinWorkman 9x kevglass 8x phu004 8x Hanksha 7x SHC 7x Olo 7x ra4king 7x Ecumene 7x Roquen 7x
 How to: JGO Wikiby Mac702015-02-17 20:56:162D Dynamic Lighting2015-01-01 20:25:42How do I start Java Game Development?by gouessej2014-12-27 19:41:21Resources for WIP gamesby kpars2014-12-18 10:26:14Understanding relations between setOrigin, setScale and setPosition in libGdx2014-10-09 22:35:00Definite guide to supporting multiple device resolutions on Android (2014)2014-10-02 22:36:02List of Learning Resources2014-08-16 10:40:00List of Learning Resources2014-08-05 19:33:27
 java-gaming.org is not responsible for the content posted by its members, including references to external websites, and other references that may or may not have a relation with our primarily gaming and game production oriented community. inquiries and complaints can be sent via email to the info‑account of the company managing the website of java‑gaming.org