Java-Gaming.org
Play Revenge of the Titans! The situation is critical. We need fancy commanders to defend Earth, the moon, Mars!
Featured games (78)
games approved by the League of Dukes
Games in Showcase (416)
games submitted by our members
Games in WIP (306)
games currently in development
News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
    Home     Help   Search   Login   Register   
Pages: [1]
  ignore  |  Print  
  Rotating rectangles for collisions?  (Read 1349 times)
0 Members and 2 Guests are viewing this topic.
Offline cubemaster21

Senior Member


Medals: 4
Projects: 1



« Posted 2012-08-13 20: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
Offline UprightPath
« Reply #1 - Posted 2012-08-13 20: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.

Offline The Cure

Senior Newbie





« Reply #2 - Posted 2012-08-14 06: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
Games published by our own members! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Offline cubemaster21

Senior Member


Medals: 4
Projects: 1



« Reply #3 - Posted 2012-08-14 22: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
Offline The Cure

Senior Newbie





« Reply #4 - Posted 2012-08-15 05: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.

Play Revenge of the Titans! The situation is critical. We need fancy commanders to defend Earth, the moon, Mars!
 
Try the Free Demo of Revenge of the Titans

Add your game by posting it in the WIP section,
or publish it in Showcase.

The first screenshot will be displayed as a thumbnail.

The invasion has landed! On Mars! And you're there to beat 'em!
mrbenebob (10 views)
2013-06-19 14:55:23

BrassApparatus (18 views)
2013-06-19 08:52:37

NegativeZero (22 views)
2013-06-19 03:31:52

NegativeZero (25 views)
2013-06-19 03:24:09

Jesse_Attard (27 views)
2013-06-18 22:03:02

HeroesGraveDev (65 views)
2013-06-15 23:35:23

Vermeer (64 views)
2013-06-14 20:08:06

davedes (65 views)
2013-06-14 16:03:55

alaslipknot (58 views)
2013-06-13 07:56:31

Roquen (80 views)
2013-06-12 04:12:32
Smoothing Algorithm Question
by UprightPath
2013-05-28 02:58:26

Smoothing Algorithm Question
by UprightPath
2013-05-28 02:57:33

Complex number cookbook
by Roquen
2013-04-24 12:47:31

2D Dynamic Lighting
by Oskuro
2013-04-17 16:46:12

2D Dynamic Lighting
by Oskuro
2013-04-17 16:45:57

2D Dynamic Lighting
by Oskuro
2013-04-17 16:23:20

Noise (bandpassed white)
by Roquen
2013-04-05 17:36:01

Noise (bandpassed white)
by Roquen
2013-04-03 16:17:38
Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines | Managed by Enhanced Four Valid XHTML 1.0! Valid CSS!